Project

General

Profile

Actions

Bug #41419

open

mds: missing dirfrag damaged check before CDir::fetch

Added by Zheng Yan over 4 years ago. Updated over 4 years ago.

Status:
New
Priority:
High
Assignee:
-
Category:
-
Target version:
-
% Done:

0%

Source:
Development
Tags:
Backport:
nautilus,mimic
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(FS):
MDS
Labels (FS):
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

we don't have damaged check before every CDir::fetch. It can cause request leak.

An user encountered following crash when he handles damaged dirfrags.

 ceph version 12.2.8 (ae699615bac534ea496ee965ac6192cb7e0e07c0) luminous (stable)
 1: (()+0x5c15b4) [0x564a1d4e65b4]
 2: (()+0x11390) [0x7f991a947390]
 3: (gsignal()+0x38) [0x7f99198d7428]
 4: (abort()+0x16a) [0x7f99198d902a]
 5: (ceph::__ceph_assert_fail(char const*, char const*, int, char const*)+0x28e) [0x564a1d52c93e]
 6: (Session::~Session()+0x3e6) [0x564a1d1caf76]
 7: (Session::~Session()+0x9) [0x564a1d1cb009]
 8: (RefCountedObject::put() const+0xfc) [0x564a1d1c879c]
 9: (SessionMap::remove_session(Session*)+0x311) [0x564a1d4631e1]
 10: (Server::_session_logged(Session*, unsigned long, bool, unsigned long, interval_set<inodeno_t, std::map<inodeno_t, inodeno_t, std::less<inodeno_t>, std::allocator<std::pair<inodeno_t const, inodeno_t> > > >&, unsigned long)+0xbef) [0x564a1d22339f]
 11: (C_MDS_session_finish::finish(int)+0x2c) [0x564a1d27d4ec]
 12: (MDSIOContextBase::complete(int)+0x98) [0x564a1d46c6b8]
 13: (MDSLogContextBase::complete(int)+0x40) [0x564a1d46ca30]
 14: (Finisher::finisher_thread_entry()+0x460) [0x564a1d52b8f0]
 15: (()+0x76ba) [0x7f991a93d6ba]
 16: (clone()+0x6d) [0x7f99199a941d]
 NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.

Actions

Also available in: Atom PDF