Skip to content

Commit 66478ab

Browse files
committed
mds: trim only to the LogSegment created for flush
This neatly avoids a situation where the MDS trims past the segment created for the `flush journal` command. Here's what it looks like: 2024-07-30T20:15:51.679+0000 7f70a809a640 1 mds.d asok_command: flush journal {prefix=flush journal} (starting...) 2024-07-30T20:15:51.679+0000 7f70a809a640 10 mds.1.26 handle_asok_command: flush journal 2024-07-30T20:15:51.679+0000 7f70a809a640 20 mds.1.26 send 2024-07-30T20:15:51.679+0000 7f70a809a640 20 mds.1.26 flush_mdlog 2024-07-30T20:15:51.679+0000 7f70a809a640 10 mds.1.cache create_subtree_map 106 subtrees, 105 fullauth ... 2024-07-30T20:15:51.680+0000 7f70a809a640 20 mds.1.log _submit_entry ESubtreeMap 105 subtrees , 0 ambiguous [metablob 0x101, 107 dirs] 2024-07-30T20:15:51.680+0000 7f70a809a640 20 mds.1.log _start_new_segment: seq = 522843 starting new segment LogSegment(522843/0xffffffffffffffff events=0) ... 2024-07-30T20:15:51.686+0000 7f709e887640 20 mds.1.26 handle_clear_mdlog: r=0 2024-07-30T20:15:51.686+0000 7f709e887640 5 mds.1.26 trim_mdlog: beginning segment expiry 2024-07-30T20:15:51.686+0000 7f709e887640 10 mds.1.log trim_to: 522843 23/0/0 ... 2024-07-30T20:15:51.858+0000 7f709e887640 20 mds.1.26 expire_segments 2024-07-30T20:15:51.858+0000 7f709e887640 5 mds.1.26 expire_segments: waiting for 22 segments to expire ... 2024-07-30T20:15:52.386+0000 7f70a008a640 20 mds.1.26 handle_expire_segments: r=0 2024-07-30T20:15:52.386+0000 7f70a008a640 20 mds.1.26 trim_segments 2024-07-30T20:15:52.386+0000 7f709e887640 5 mds.1.26 trim_expired_segments: expiry complete, expire_pos/trim_pos is now 22f4c774/22c00000 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(503314/0x22f4c774 events=649) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(503314/0x22f4c774 events=649) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(503963/0x230019e6 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(503963/0x230019e6 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(504987/0x23119d93 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(504987/0x23119d93 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(506011/0x23234d24 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(506011/0x23234d24 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(507035/0x23392678 events=397) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(507035/0x23392678 events=397) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(507432/0x23400db4 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(507432/0x23400db4 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(508456/0x2351c0af events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(508456/0x2351c0af events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(509480/0x23639df0 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(509480/0x23639df0 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(510504/0x2375912d events=607) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(510504/0x2375912d events=607) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(511111/0x2380290f events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(511111/0x2380290f events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(512135/0x2391b7f3 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(512135/0x2391b7f3 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(513159/0x23a6a15f events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(513159/0x23a6a15f events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(514183/0x23b855e7 events=442) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(514183/0x23b855e7 events=442) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(514625/0x23c01325 events=979) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(514625/0x23c01325 events=979) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(515604/0x23d0e086 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: expiring up to this major segment seq=515604 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(503314/0x22f4c774 events=649) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(503963/0x230019e6 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(504987/0x23119d93 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(506011/0x23234d24 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(507035/0x23392678 events=397) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(507432/0x23400db4 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(508456/0x2351c0af events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(509480/0x23639df0 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(510504/0x2375912d events=607) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(511111/0x2380290f events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(512135/0x2391b7f3 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(513159/0x23a6a15f events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(514183/0x23b855e7 events=442) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(514625/0x23c01325 events=979) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(515604/0x23d0e086 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(516628/0x23e2a879 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(516628/0x23e2a879 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(517652/0x23f47dbf events=665) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(517652/0x23f47dbf events=665) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(518317/0x240007be events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(518317/0x240007be events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(519341/0x2411af83 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(519341/0x2411af83 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(520365/0x24234a83 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(520365/0x24234a83 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(521389/0x24344292 events=691) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(521389/0x24344292 events=691) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(522080/0x24400e24 events=763) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: maybe expiring LogSegment(522080/0x24400e24 events=763) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: examining LogSegment(522843/0x244c4fda events=1) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments: expiring up to this major segment seq=522843 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(515604/0x23d0e086 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(516628/0x23e2a879 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(517652/0x23f47dbf events=665) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(518317/0x240007be events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(519341/0x2411af83 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(520365/0x24234a83 events=1024) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(521389/0x24344292 events=691) 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.log _trim_expired_segments: expiring LogSegment(522080/0x24400e24 events=763) 2024-07-30T20:15:52.386+0000 7f709e887640 10 mds.1.log _trim_expired_segments waiting for expiry LogSegment(522843/0x244c4fda events=1) 2024-07-30T20:15:52.386+0000 7f709e887640 1 -- [v2:127.0.0.1:6872/1197350146,v1:127.0.0.1:6873/1197350146] --> [v2:127.0.0.1:6850/2027314847,v1:127.0.0.1:6851/2027314847] -- osd_op(unknown.0.26:131573 2.7 2:ea85266a:::201.00000000:head [writefull 0~90 [fadvise_dontneed] in=90b] snapc 0=[] ondisk+write+known_if_redirected+full_force+supports_pool_eio e76) -- 0x555daee1ac00 con 0x555da2bc7180 2024-07-30T20:15:52.386+0000 7f709e887640 5 mds.1.26 trim_expired_segments: trim complete, expire_pos/trim_pos is now 244c4fda/22c00000 2024-07-30T20:15:52.386+0000 7f709e887640 20 mds.1.26 write_journal_head Related-to: https://tracker.ceph.com/issues/59119 Signed-off-by: Patrick Donnelly <[email protected]>
1 parent 64ec1e2 commit 66478ab

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/mds/MDSRank.cc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,12 @@ class C_Flush_Journal : public MDSInternalContext {
9797

9898
// I need to seal off the current segment, and then mark all
9999
// previous segments for expiry
100-
auto sle = mdcache->create_subtree_map();
100+
auto* sle = mdcache->create_subtree_map();
101101
mdlog->submit_entry(sle);
102+
seq = sle->get_seq();
102103

103104
Context *ctx = new LambdaContext([this](int r) {
104-
handle_flush_mdlog(r);
105+
handle_clear_mdlog(r);
105106
});
106107

107108
// Flush initially so that all the segments older than our new one
@@ -153,7 +154,7 @@ class C_Flush_Journal : public MDSInternalContext {
153154
// Put all the old log segments into expiring or expired state
154155
dout(5) << __func__ << ": beginning segment expiry" << dendl;
155156

156-
int ret = mdlog->trim_all();
157+
int ret = mdlog->trim_to(seq);
157158
if (ret != 0) {
158159
*ss << "Error " << ret << " (" << cpp_strerror(ret) << ") while trimming log";
159160
complete(ret);
@@ -250,6 +251,7 @@ class C_Flush_Journal : public MDSInternalContext {
250251

251252
MDCache *mdcache;
252253
MDLog *mdlog;
254+
SegmentBoundary::seq_t seq = 0;
253255
std::ostream *ss;
254256
Context *on_finish;
255257

0 commit comments

Comments
 (0)