Ceph : Issueshttps://tracker.ceph.com/https://tracker.ceph.com/favicon.ico2022-06-07T08:37:35ZCeph
Redmine rbd - Bug #55909 (In Progress): [pwl][test] sporadic qemu_xfstests failures after placing cache f...https://tracker.ceph.com/issues/559092022-06-07T08:37:35ZIlya Dryomov
<p><a class="external" href="https://github.com/ceph/ceph/pull/46045">https://github.com/ceph/ceph/pull/46045</a></p>
<pre>
qemu_xfstests is the only job that sporadically fails now:
https://pulpito.ceph.com/dis-2022-06-03_20:17:19-rbd:pwl-cache-wip-dis-testing-distro-default-smithi/
20x qemu_xfstests job:
https://pulpito.ceph.com/dis-2022-06-05_10:19:26-rbd:pwl-cache-wip-dis-testing-distro-default-smithi/
10x all other jobs:
https://pulpito.ceph.com/dis-2022-06-05_10:21:14-rbd:pwl-cache-wip-dis-testing-distro-default-smithi/
</pre>
<p>Breakdown of failures:</p>
<pre>
086 (e.g. http://qa-proxy.ceph.com/teuthology/dis-2022-06-05_10:19:26-rbd:pwl-cache-wip-dis-testing-distro-default-smithi/6863660)
167 qemu-kvm coredump (https://pulpito.ceph.com/dis-2022-06-05_10:19:26-rbd:pwl-cache-wip-dis-testing-distro-default-smithi/6863685)
199 (http://qa-proxy.ceph.com/teuthology/dis-2022-06-05_10:19:26-rbd:pwl-cache-wip-dis-testing-distro-default-smithi/6863709)
259 (e.g. http://qa-proxy.ceph.com/teuthology/dis-2022-06-05_10:19:26-rbd:pwl-cache-wip-dis-testing-distro-default-smithi/6863682)
</pre>
<p>259 failure is bogus -- likely a race in the loop driver in the (very!) old kernel baked into the qcow image used by qemu_xfstests or perhaps just a lack of "udevadm settle" calls in the test script.</p>
<p>Need to track down the rest, especially 167 as it appears that it triggered a crash in librbd.</p> rbd - Bug #52962 (Fix Under Review): rbd: increase overlap range when overlap occur.https://tracker.ceph.com/issues/529622021-10-18T02:27:18Zjianpeng majianpeng.ma@intel.com
<p>We use BlockGuard to avoid reorder when overlap occur. But the following<br />case don't work:<br />a: write(3,5)<br />b: write(4,9)<br />c: write(8, 11).<br />b overlap w/ a, so it append in a. c overlap w/ b.<br />In fact, c shuld append b. But currently, it can't change overlap range<br />when b overlap a occur. The c can't be detained and issue before b.<br />We should change overlap from (3,5) to (3, 9) when b overlap a.</p> RADOS - Feature #49089 (Fix Under Review): msg: add new func support_reencodehttps://tracker.ceph.com/issues/490892021-02-02T08:13:27Zjianpeng majianpeng.ma@intel.com
<p>Currently, we use Messenger::ms_can_fast_dispatch to verfiy Message whether support reencode. Now we add a new api of Message to support</p>
<p>Why MOSDMap can't support reencode: in MOSDMap::encode_payload, it clear data in<br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/messages/MOSDMap.h#L116">https://github.com/ceph/ceph/blob/master/src/messages/MOSDMap.h#L116</a><br /><a class="external" href="https://github.com/ceph/ceph/blob/master/src/messages/MOSDMap.h#L139">https://github.com/ceph/ceph/blob/master/src/messages/MOSDMap.h#L139</a>.<br />So it can't reencode.</p>
<p>But for other message, we can reencode. So we add new func to support reencode.</p> Ceph - Bug #39643 (In Progress): make jemalloc/tcmalloc work.https://tracker.ceph.com/issues/396432019-05-09T08:26:53Zjianpeng majianpeng.ma@intel.com
<p>In commit 2e01287, it let libcommon or libceph-common take care of this.<br />But in fact, libcommon/libceph-common didn't link ALLOC_LIBS which make other<br />bin-files couldn't use jemalloc/tcmalloc.</p> RADOS - Bug #14100 (New): the semantics of CEPH_OSD_OP_ZERO.https://tracker.ceph.com/issues/141002015-12-17T07:23:45Zjianpeng majianpeng.ma@intel.com
<p>Now in ReplicatedPG::do_osd_ops, for CEPH_OSD_OP_ZERO, there are the following handle:</p>
<p>a)if object din't exist, the op became no-op.<br />b)if object existed<br /><pre>
if (offset + len >= ob.size)
if (offset >= ob.size)
op became no-op
else
op became truncate and the ob.size became offset
else
zero(offset, len) like normal write opeartions
</pre></p>
<p>Those behaviors are ok for rbd. From the native semantics of zero, it write the data(off, len) w/ zero.Make later read data is zero.<br />For rbd, we know the object size. If non-exist or smaller, we will append zero data in the end.</p>
<p>rados has a api: rados_write_op_zero, it use zero as write which don't carry data from client to osd.<br />But for a normal object, <br />a)zero a non-exist object don't work<br />b)zero(offset >= ob.size) don't work(but write(offset >= ob.size can work)<br />c)zero(offset + len >= ob.size & offset < ob.size) don't work(zero become a truncate and ob.size=offset).Later read(offset, len) don't return any data.</p>
<p>In fact, for rbd, zero mean discard. But for rados, zero is a speical write.</p>