Project

General

Profile

Actions

Bug #52864

closed

kclient not always reporting failed async creates when fsync'ing parent

Added by Jeff Layton over 2 years ago. Updated over 2 years ago.

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

0%

Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Crash signature (v1):
Crash signature (v2):

Description

Patrick noticed that our reporting for failed async creates is broken, and sometimes returns 0 even when an async create that happened before it failed. The issue is in the order of operations in ceph_fsync. We're currently relying on the initial file_check_and_advance call to get those errors for us, but that may be called before we get the failed create response. We need to check that after everything in ceph_fsync has completed.

It turns out that we have a completely separte i_meta_err field, that seems to be superfluous, so we should be able to fix this and simplify the code at the same time.

The reproducer for this is to set mds_dir_max_entries to a small value (I used 10), and then have a program create 11 files in the directory and fsync the dirfd. The 11th create fails, but mainline kernels pretty consistently return 0 to the final fsync.


Related issues 1 (0 open1 closed)

Related to CephFS - Bug #52606: qa: test_dirfrag_limitResolvedPatrick Donnelly

Actions
Actions #1

Updated by Jeff Layton over 2 years ago

  • Description updated (diff)
Actions #2

Updated by Patrick Donnelly over 2 years ago

  • Related to Bug #52606: qa: test_dirfrag_limit added
Actions #3

Updated by Jeff Layton over 2 years ago

  • Status changed from In Progress to Resolved

This was resolved in v5.15 kernels, and the fix was marked for stable and picked up for earlier releases.

Actions

Also available in: Atom PDF