From: Radoslaw Zarzynski Date: Thu, 27 Nov 2025 15:57:40 +0000 (+0000) Subject: tests: LibRadosIoEC allows for overwrites / unalligned writes on crimson X-Git-Tag: v21.0.0~3^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c84e663ca3446e02a3ea3aabc8046181e1604f2f;p=ceph.git tests: LibRadosIoEC allows for overwrites / unalligned writes on crimson 1. crimson-osd does support solely the FastEC flavor of EC pools; SlowEC isn't now and won't be implemented. 2. FastEC imposes the EC overwrites support. 3. When run against crimson's EC implementation, the tests shall not enforce e.g. ENOTSUPP on overwrite. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/test/librados/io.cc b/src/test/librados/io.cc index a1f333edbc88..f391744de613 100644 --- a/src/test/librados/io.cc +++ b/src/test/librados/io.cc @@ -286,8 +286,10 @@ TEST_F(LibRadosIoEC, RoundTrip) { ASSERT_EQ((int)sizeof(buf2), rados_read(ioctx, "foo", buf2, sizeof(buf2), 0)); ASSERT_EQ(0, memcmp(buf, buf2, sizeof(buf))); - uint64_t off = 19; - ASSERT_EQ(-EOPNOTSUPP, rados_write(ioctx, "bar", buf, sizeof(buf), off)); + if (!is_crimson_cluster()) { + uint64_t off = 19; + ASSERT_EQ(-EOPNOTSUPP, rados_write(ioctx, "bar", buf, sizeof(buf), off)); + } } TEST_F(LibRadosIoEC, OverlappingWriteRoundTrip) { @@ -304,12 +306,14 @@ TEST_F(LibRadosIoEC, OverlappingWriteRoundTrip) { scope_guard sg(std::move(cleanup)); memset(buf, 0xcc, dbsize); ASSERT_EQ(0, rados_write(ioctx, "foo", buf, dbsize, 0)); - memset(buf2, 0xdd, bsize); - ASSERT_EQ(-EOPNOTSUPP, rados_write(ioctx, "foo", buf2, bsize, 0)); - memset(buf3, 0xdd, dbsize); - ASSERT_EQ(dbsize, rados_read(ioctx, "foo", buf3, dbsize, 0)); - // Read the same as first write - ASSERT_EQ(0, memcmp(buf3, buf, dbsize)); + if (!is_crimson_cluster()) { + memset(buf2, 0xdd, bsize); + ASSERT_EQ(-EOPNOTSUPP, rados_write(ioctx, "foo", buf2, bsize, 0)); + memset(buf3, 0xdd, dbsize); + ASSERT_EQ(dbsize, rados_read(ioctx, "foo", buf3, dbsize, 0)); + // Read the same as first write + ASSERT_EQ(0, memcmp(buf3, buf, dbsize)); + } } TEST_F(LibRadosIoEC, WriteFullRoundTrip) { @@ -348,7 +352,9 @@ TEST_F(LibRadosIoEC, AppendRoundTrip) { ASSERT_EQ(0, memcmp(buf3 + alignment, buf2, alignment)); memset(unalignedbuf, 0, uasize); ASSERT_EQ(0, rados_append(ioctx, "foo", unalignedbuf, uasize)); - ASSERT_EQ(-EOPNOTSUPP, rados_append(ioctx, "foo", unalignedbuf, uasize)); + if (!is_crimson_cluster()) { + ASSERT_EQ(-EOPNOTSUPP, rados_append(ioctx, "foo", unalignedbuf, uasize)); + } } TEST_F(LibRadosIoEC, TruncTest) { @@ -356,12 +362,14 @@ TEST_F(LibRadosIoEC, TruncTest) { char buf2[sizeof(buf)]; memset(buf, 0xaa, sizeof(buf)); ASSERT_EQ(0, rados_append(ioctx, "foo", buf, sizeof(buf))); - ASSERT_EQ(-EOPNOTSUPP, rados_trunc(ioctx, "foo", sizeof(buf) / 2)); - memset(buf2, 0, sizeof(buf2)); - // Same size - ASSERT_EQ((int)sizeof(buf), rados_read(ioctx, "foo", buf2, sizeof(buf2), 0)); - // No change - ASSERT_EQ(0, memcmp(buf, buf2, sizeof(buf))); + if (!is_crimson_cluster()) { + ASSERT_EQ(-EOPNOTSUPP, rados_trunc(ioctx, "foo", sizeof(buf) / 2)); + memset(buf2, 0, sizeof(buf2)); + // Same size + ASSERT_EQ((int)sizeof(buf), rados_read(ioctx, "foo", buf2, sizeof(buf2), 0)); + // No change + ASSERT_EQ(0, memcmp(buf, buf2, sizeof(buf))); + } } TEST_F(LibRadosIoEC, RemoveTest) {