Bug #8622
Updated by Loïc Dachary almost 10 years ago
Original title for the record : "EC pool fails for certain (k,m) combinations for >4MB objs"
Steps to reproduce the error:
<pre>
git clone https://github.com/ceph/ceph.git
cd ceph
./do_autogen.sh
make
cd src
OSD=5 ./vstart.sh -l -n -X
./ceph osd erasure-code-profile set ecprofile ruleset-failure-domain=osd k=3 m=2 plugin=jerasure
./ceph osd crush rule create-erasure ecruleset ecprofile
./ceph osd pool create ecpool 1 1 erasure ecprofile ecruleset
</pre>
Once you have the development cluster working you can try:
<pre>
dd if=/dev/urandom of=./test.dat bs=1MB count=5
./rados -p ecpool put test ./test.dat
</pre>
And you get the following error:
<pre>
error putting ecpool/test: (95) Operation not supported
</pre>
However, the following case works perfectly:
<pre>
dd if=/dev/urandom of=./test.dat bs=1MB count=4
./rados -p ecpool put test ./test.dat
</pre>
If instead of (k=3, m=2, OSD=5) you try (k=2, m=2, OSD=4) it works for both 4MB and 5MB objects.
I observed this bug in an Ubuntu Precise machine and in an up-to-date Arch Linux machine.
This same error was first observed by Michael Nelson: http://lists.ceph.com/pipermail/ceph-users-ceph.com/2014-March/028311.html