<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/liberasurecode.git/src/backends, branch master</title>
<subtitle>github.com: openstack/liberasurecode.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/'/>
<entry>
<title>Add build-time option to suffix library names sent to dlopen</title>
<updated>2021-10-26T22:20:10+00:00</updated>
<author>
<name>Tim Burke</name>
<email>tim.burke@gmail.com</email>
</author>
<published>2021-10-26T22:09:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/commit/?id=53b5c5649b4046c7e6defb85bfceafcea74f0f0e'/>
<id>53b5c5649b4046c7e6defb85bfceafcea74f0f0e</id>
<content type='text'>
This is useful when repacking libraries for python wheels, for example.

Change-Id: Ie7b36584de5054c14a9b77d87a5c5fa5cc7a3719
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is useful when repacking libraries for python wheels, for example.

Change-Id: Ie7b36584de5054c14a9b77d87a5c5fa5cc7a3719
</pre>
</div>
</content>
</entry>
<entry>
<title>Stop using ceill() to compute padded data size</title>
<updated>2017-06-06T18:53:45+00:00</updated>
<author>
<name>Pete Zaitcev</name>
<email>zaitcev@kotori.zaitcev.us</email>
</author>
<published>2017-05-23T23:45:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/commit/?id=960cdd09dcabe5e125d8ee1c54fcc1f908e8ef11'/>
<id>960cdd09dcabe5e125d8ee1c54fcc1f908e8ef11</id>
<content type='text'>
The well-known idiom to compute a required number of data blocks
of size B to contain data of length d is:

     (d + (B-1))/B

The code we use, with ceill(), computes the same value, but does
it in an unorthodox way. This makes a reviewer to doubt himself
and even run tests to make sure we're really computing the
obvious thing.

Apropos the reviewer confusion, the code in Phazr.IO looks weird.
It uses (word_size - hamming_distance) to compute the necessary
number of blocks... but then returns the amount of memory needed
to store blocks of a different size (word_size). We left all of it
alone and return exactly the same values that the old computation
returned.

All these computations were the only thing in the code that used
-lm, so drop that too.

Coincidentially, this patch solves the crash of distro-built
packages of liberasurecode (see Red Hat bug #1454543). But it's
a side effect. Expect a proper patch soon.

Change-Id: Ib297f6df304abf5ca8c27d3392b1107a525e0be0
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The well-known idiom to compute a required number of data blocks
of size B to contain data of length d is:

     (d + (B-1))/B

The code we use, with ceill(), computes the same value, but does
it in an unorthodox way. This makes a reviewer to doubt himself
and even run tests to make sure we're really computing the
obvious thing.

Apropos the reviewer confusion, the code in Phazr.IO looks weird.
It uses (word_size - hamming_distance) to compute the necessary
number of blocks... but then returns the amount of memory needed
to store blocks of a different size (word_size). We left all of it
alone and return exactly the same values that the old computation
returned.

All these computations were the only thing in the code that used
-lm, so drop that too.

Coincidentially, this patch solves the crash of distro-built
packages of liberasurecode (see Red Hat bug #1454543). But it's
a side effect. Expect a proper patch soon.

Change-Id: Ib297f6df304abf5ca8c27d3392b1107a525e0be0
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge "Jerasure: Handle initialization errors correctly"</title>
<updated>2017-05-10T15:19:35+00:00</updated>
<author>
<name>Jenkins</name>
<email>jenkins@review.openstack.org</email>
</author>
<published>2017-05-10T15:19:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/commit/?id=345f1a93a2300b1dc7f8ec8ef0fabd24615d82b5'/>
<id>345f1a93a2300b1dc7f8ec8ef0fabd24615d82b5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge "ISA-L: Only calculate gf tables on init, not every encode"</title>
<updated>2017-03-29T06:49:41+00:00</updated>
<author>
<name>Jenkins</name>
<email>jenkins@review.openstack.org</email>
</author>
<published>2017-03-29T06:49:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/commit/?id=7c4ef60c9d9e69dd23e43ec59d6c03e139a32723'/>
<id>7c4ef60c9d9e69dd23e43ec59d6c03e139a32723</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Jerasure: Handle initialization errors correctly</title>
<updated>2017-03-16T17:49:49+00:00</updated>
<author>
<name>Tim Burke</name>
<email>tim.burke@gmail.com</email>
</author>
<published>2017-01-25T23:40:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/commit/?id=842b4a9bd71f0ee6390bf3ace71666a9acc017fd'/>
<id>842b4a9bd71f0ee6390bf3ace71666a9acc017fd</id>
<content type='text'>
Otherwise we can get backtraces where we try to free something that was
never initialized.

Change-Id: Iaea427b977fd20819e2da5678cc4889d3a42dd65
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Otherwise we can get backtraces where we try to free something that was
never initialized.

Change-Id: Iaea427b977fd20819e2da5678cc4889d3a42dd65
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge "Add Phazr.IO libphazr backend to liberasurecode"</title>
<updated>2017-03-01T02:21:14+00:00</updated>
<author>
<name>Jenkins</name>
<email>jenkins@review.openstack.org</email>
</author>
<published>2017-03-01T02:21:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/commit/?id=26e47421407634a270806ff396d99c69f3fa861c'/>
<id>26e47421407634a270806ff396d99c69f3fa861c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Phazr.IO libphazr backend to liberasurecode</title>
<updated>2017-02-28T19:14:11+00:00</updated>
<author>
<name>Jim Cheung</name>
<email>jim.cheung@phazr.io</email>
</author>
<published>2017-01-23T21:55:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/commit/?id=06e50ea86b6de729fa5dbc23ef41af87b19e636a'/>
<id>06e50ea86b6de729fa5dbc23ef41af87b19e636a</id>
<content type='text'>
Currently, there are several implementations of erasure codes that are
available within OpenStack Swift.  Most, if not all, of which are based
on the Reed Solomon coding algorithm.

Phazr.IO’s Erasure Coding technology uses a patented algorithm which are
significantly more efficient and improves the speed of coding, decoding
and reconstruction.  In addition, Phazr.IO Erasure Code use a non-systematic
algorithm which provides data protection at rest and in transport without
the need to use encryption.

Please contact support@phazr.io for more info on our technology.

Change-Id: I4e40d02a8951e38409ad3c604c5dd6f050fa7ea0
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, there are several implementations of erasure codes that are
available within OpenStack Swift.  Most, if not all, of which are based
on the Reed Solomon coding algorithm.

Phazr.IO’s Erasure Coding technology uses a patented algorithm which are
significantly more efficient and improves the speed of coding, decoding
and reconstruction.  In addition, Phazr.IO Erasure Code use a non-systematic
algorithm which provides data protection at rest and in transport without
the need to use encryption.

Please contact support@phazr.io for more info on our technology.

Change-Id: I4e40d02a8951e38409ad3c604c5dd6f050fa7ea0
</pre>
</div>
</content>
</entry>
<entry>
<title>jerasure: plug memory leaks</title>
<updated>2017-02-21T20:50:03+00:00</updated>
<author>
<name>Daniel Axtens</name>
<email>dja@axtens.net</email>
</author>
<published>2017-02-16T06:16:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/commit/?id=4ab1336cabe0c1f5d7fc18c21b78f5d21aca5b60'/>
<id>4ab1336cabe0c1f5d7fc18c21b78f5d21aca5b60</id>
<content type='text'>
Jerasure inits some global variables on init.
We need to free them, or we'll leak memory.

Partial-Bug: #1666674

Change-Id: Ie7073738428a71910016e910a66dbd92ca98eb92
Signed-off-by: Daniel Axtens &lt;dja@axtens.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Jerasure inits some global variables on init.
We need to free them, or we'll leak memory.

Partial-Bug: #1666674

Change-Id: Ie7073738428a71910016e910a66dbd92ca98eb92
Signed-off-by: Daniel Axtens &lt;dja@axtens.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ISA-L: Only calculate gf tables on init, not every encode</title>
<updated>2017-02-12T22:43:24+00:00</updated>
<author>
<name>Daniel Axtens</name>
<email>dja@axtens.net</email>
</author>
<published>2017-02-10T02:55:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/commit/?id=90679884efa7bc277ced354032ca655e1e99faa2'/>
<id>90679884efa7bc277ced354032ca655e1e99faa2</id>
<content type='text'>
Currently, the Galois Field multiplication tables are recalcuated
every time an encode is done. This is wasteful, as they are fixed
by k and m, which is set on init.

Calculate the tables only once, on init.

This trades off a little bit of per-context memory and creation
time for measurably faster encodes when using the same context.

On powerpc64le, when repeatedly encoding a 4kB file with pyeclib,
this increases the measured speed by over 10%.

Change-Id: I2f025aaee2d13cb1717a331e443e179ad5a13302
Signed-off-by: Daniel Axtens &lt;dja@axtens.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, the Galois Field multiplication tables are recalcuated
every time an encode is done. This is wasteful, as they are fixed
by k and m, which is set on init.

Calculate the tables only once, on init.

This trades off a little bit of per-context memory and creation
time for measurably faster encodes when using the same context.

On powerpc64le, when repeatedly encoding a 4kB file with pyeclib,
this increases the measured speed by over 10%.

Change-Id: I2f025aaee2d13cb1717a331e443e179ad5a13302
Signed-off-by: Daniel Axtens &lt;dja@axtens.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ISA-L: free matrix on exit</title>
<updated>2017-02-10T02:20:42+00:00</updated>
<author>
<name>Daniel Axtens</name>
<email>dja@axtens.net</email>
</author>
<published>2017-02-10T02:13:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/liberasurecode.git/commit/?id=10e096fe097a489eec41bad120f5b5e52fa4b61c'/>
<id>10e096fe097a489eec41bad120f5b5e52fa4b61c</id>
<content type='text'>
isa_l_common_init allocates desc-&gt;matrix, but this isn't freed in
isa_l_exit. Instead, the entire isa_l_desc structure is freed,
thus leaking the memory.

Explicitly free desc-&gt;matrix.

Change-Id: Ibf672d1a309498591b87d739632a90a1b3704f7e
Signed-off-by: Daniel Axtens &lt;dja@axtens.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
isa_l_common_init allocates desc-&gt;matrix, but this isn't freed in
isa_l_exit. Instead, the entire isa_l_desc structure is freed,
thus leaking the memory.

Explicitly free desc-&gt;matrix.

Change-Id: Ibf672d1a309498591b87d739632a90a1b3704f7e
Signed-off-by: Daniel Axtens &lt;dja@axtens.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
