Project

General

Profile

Actions

Bug #52118

closed

RBD qos causes io to be out of order

Added by ShuaiChao Wang over 2 years ago. Updated over 2 years ago.

Status:
Won't Fix
Priority:
Normal
Assignee:
Target version:
-
% Done:

0%

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

Description

For example, there are two IO's, IO1 and IO2, and IO1 enters the IO queue before IO2.

If the following conditions are met:
1. When io1 enters qos, there are not enough tokens and io1 enters qos queue.
2. If io1 obtains enough tokens, IO1 is placed after IO2.
2. When there are enough tokens for IO2, IO2 dequeues.
3. Because IO1 has acquired the token, it directly dequeued.

In this case, IO2 is processed before IO1, resulting in out-of-order processing.

Actions #1

Updated by Ilya Dryomov over 2 years ago

Hi ShuaiChao,

Is that a problem? Generally, in the absence of flushes the order isn't guaranteed. I don't think QOS changes anything here.

To ensure that IO_1 is committed before IO_2 you need to issue a flush after issuing IO_1 (and before issuing IO_2).

Actions #2

Updated by ShuaiChao Wang over 2 years ago

I only found this problem in the test, and did not find any errors caused by this reason in the actual application.

If it's not a problem, I agree.

Actions #3

Updated by Ilya Dryomov over 2 years ago

  • Status changed from New to Won't Fix
  • Assignee set to Ilya Dryomov
Actions

Also available in: Atom PDF