Project

General

Profile

Actions

Bug #41310

closed

client: lazyio synchronize does not get file size

Added by Sidharth Anupkrishnan over 4 years ago. Updated over 4 years ago.

Status:
Resolved
Priority:
Urgent
Category:
Correctness/Safety
Target version:
% Done:

0%

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

Description

LazyIO synchronize fails to do the task of making the propagated writes by other clients/fds visible to the current fd in the following situation:

1) write() by fda
2) lazyio_propagate() by fda
3) lazyio_synchronize() by fdb.
4) read() by fdb

In this scenario fdb is expected to read whatever is written by fda but it does not read anything (0 bytes returned). Upon debugging, it seems the read fails because the file size( in->size ) is still 0 during read() by fdb and hence returns without reading in this conditional in Client::_read_async():

if( off > in->size )
return 0;

Ideally the lazyio_synchronize() call before the read() should have taken care of this and hence should call a getattr(CEPH_STAT_CAP_SIZE) to update the in->size.


Related issues 2 (0 open2 closed)

Copied to CephFS - Backport #41887: mimic: client: lazyio synchronize does not get file sizeRejectedPatrick DonnellyActions
Copied to CephFS - Backport #41888: nautilus: client: lazyio synchronize does not get file sizeResolvedNathan CutlerActions
Actions #1

Updated by Sidharth Anupkrishnan over 4 years ago

  • Pull request ID set to 29705
Actions #2

Updated by Patrick Donnelly over 4 years ago

  • Subject changed from LazyIO synchronize does not work as expected to client: lazyio propagate does not update file size
  • Priority changed from Normal to Urgent
  • Target version set to v15.0.0
  • Start date deleted (08/16/2019)
  • Source set to Development
  • Backport set to nautilus,mimic
Actions #3

Updated by Patrick Donnelly over 4 years ago

  • Subject changed from client: lazyio propagate does not update file size to client: lazyio synchronize does not get file size
Actions #4

Updated by Patrick Donnelly over 4 years ago

  • Status changed from New to Pending Backport
Actions #5

Updated by Nathan Cutler over 4 years ago

  • Copied to Backport #41887: mimic: client: lazyio synchronize does not get file size added
Actions #6

Updated by Nathan Cutler over 4 years ago

  • Copied to Backport #41888: nautilus: client: lazyio synchronize does not get file size added
Actions #7

Updated by Nathan Cutler over 4 years ago

  • Status changed from Pending Backport to Resolved

While running with --resolve-parent, the script "backport-create-issue" noticed that all backports of this issue are in status "Resolved" or "Rejected".

Actions

Also available in: Atom PDF