Project

General

Profile

Actions

Bug #2217

closed

sync and O_DIRECT writes only write first extent in iov vector

Added by Sage Weil about 12 years ago. Updated over 10 years ago.

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

0%

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

Description

static ssize_t ceph_aio_write(struct kiocb *iocb, const struct iovec *iov,
unsigned long nr_segs, loff_t pos)

...calls...

ret = ceph_sync_write(file, iov->iov_base, iov->iov_len,
&iocb->ki_pos);

only writing the first buffer extent!

Actions #1

Updated by Alex Elder about 12 years ago

The code should not be written that way.

However I think it doesn't matter at this point, because the only caller
(via the file_operatinos->aio_write method) is do_sync_write(), which
only ever (currently) passes a single segment in the iov.

Actions #2

Updated by Sage Weil over 11 years ago

  • Project changed from Linux kernel client to CephFS
  • Category deleted (fs/ceph)
Actions #3

Updated by Zheng Yan over 10 years ago

  • Status changed from New to Resolved

by commit 53d028160f (ceph: implement readv/preadv for sync operation) and commit 2f0a7a1808 (ceph: Implement writev/pwritev for sync operation)

Actions

Also available in: Atom PDF