Project

General

Profile

Actions

Bug #44525

closed

LibCephFS::RecalledGetattr test failed

Added by victor zhang about 4 years ago. Updated almost 4 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
% Done:

0%

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

Description

Error reason:
When do Client::_open, MDS didn't return Fs which causes error on this code
ASSERT_EQ(ceph_ll_delegation(cmount2, fh, CEPH_DELEGATION_RD, dummy_deleg_cb, &recalled), 0);
logs:
2020-03-03 02:59:50.165572 7f74a53e45c0 10 set_deleg: inode 0x1000000048a.head(faked_ino=0 ref=6 ll_ref=1 cap_refs={4=0,2048=0,4096=0,8192=0} open={1=1,2=0} mode=100666 size=32/0 nlink=1 mtime=2020-03-03 02:59:50.163809 caps=pAsLsXsFrw(0=pAsLsXsFrw) flushing_caps=Fw objectset[0x1000000048a ts 0/0 objects 0 dirty_or_tx 0] parents=0x7f7258012fa0 0x7f7258011530)
2020-03-03 02:59:50.165582 7f74a53e45c0 10 set_deleg: cap mismatch, have=pAsLsXsFrw need=pAsLsXsFscr

Check code Client::_open, This function didn't require CEPH_CAP_FILE_SHARED. There is possibility MDS didn't return Fs in time, but the Client::open continues without Fs.
if (deleg_timeout && result == 0) {
int need = 0, have;

if (cmode & CEPH_FILE_MODE_WR)
need |= CEPH_CAP_FILE_WR;
if (cmode & CEPH_FILE_MODE_RD)
need |= CEPH_CAP_FILE_RD; <<<
result = get_caps(in, need, want, &have, -1);

Related issues 1 (0 open1 closed)

Copied to CephFS - Backport #44843: octopus: LibCephFS::RecalledGetattr test failedResolvedNathan CutlerActions
Actions

Also available in: Atom PDF