Blame SOURCES/centos-linux-3.10-ceph-append-write-bug15953.patch
|
|
e293be |
centosplus patch [bug#15953]
|
|
|
e293be |
|
|
|
e293be |
https://tracker.ceph.com/issues/37713
|
|
|
e293be |
|
|
|
e293be |
Provided by: Zheng Yan <ukernel@gmail.com>
|
|
|
e293be |
|
|
|
e293be |
--- a/fs/ceph/file.c 2019-03-25 13:43:20.001424423 -0700
|
|
|
e293be |
+++ b/fs/ceph/file.c 2019-03-25 13:45:44.911586556 -0700
|
|
|
e293be |
@@ -1487,6 +1487,7 @@ retry_snap:
|
|
|
e293be |
(ci->i_ceph_flags & CEPH_I_ERROR_WRITE)) {
|
|
|
e293be |
struct ceph_snap_context *snapc;
|
|
|
e293be |
struct iov_iter i;
|
|
|
e293be |
+ loff_t orig_ki_pos;
|
|
|
e293be |
mutex_unlock(&inode->i_mutex);
|
|
|
e293be |
|
|
|
e293be |
spin_lock(&ci->i_ceph_lock);
|
|
|
e293be |
@@ -1504,11 +1505,15 @@ retry_snap:
|
|
|
e293be |
|
|
|
e293be |
iov_iter_init(&i, iov, nr_segs, count, 0);
|
|
|
e293be |
|
|
|
e293be |
+ orig_ki_pos = iocb->ki_pos;
|
|
|
e293be |
+ iocb->ki_pos = pos;
|
|
|
e293be |
if (file->f_flags & O_DIRECT)
|
|
|
e293be |
written = ceph_direct_read_write(iocb, &i, snapc,
|
|
|
e293be |
&prealloc_cf);
|
|
|
e293be |
else
|
|
|
e293be |
written = ceph_sync_write(iocb, &i, snapc);
|
|
|
e293be |
+ if (iocb->ki_pos == pos)
|
|
|
e293be |
+ iocb->ki_pos = orig_ki_pos;
|
|
|
e293be |
|
|
|
e293be |
ceph_put_snap_context(snapc);
|
|
|
e293be |
} else {
|