Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0e5dd45c authored by majianpeng's avatar majianpeng Committed by Sage Weil
Browse files

ceph: Move the place for EOLDSNAPC handle in ceph_aio_write to easily understand



Only for ceph_sync_write, the osd can return EOLDSNAPC.so move the
related codes after the call ceph_sync_write.

Signed-off-by: default avatarJianpeng Ma <majianpeng@gmail.com>
Reviewed-by: default avatarSage Weil <sage@inktank.com>
parent a158073c
Loading
Loading
Loading
Loading
+9 −7
Original line number Original line Diff line number Diff line
@@ -766,6 +766,15 @@ static ssize_t ceph_aio_write(struct kiocb *iocb, const struct iovec *iov,
		mutex_unlock(&inode->i_mutex);
		mutex_unlock(&inode->i_mutex);
		written = ceph_sync_write(file, iov->iov_base, count,
		written = ceph_sync_write(file, iov->iov_base, count,
					  pos, &iocb->ki_pos);
					  pos, &iocb->ki_pos);
		if (written == -EOLDSNAPC) {
			dout("aio_write %p %llx.%llx %llu~%u"
				"got EOLDSNAPC, retrying\n",
				inode, ceph_vinop(inode),
				pos, (unsigned)iov->iov_len);
			mutex_lock(&inode->i_mutex);
			hold_mutex = true;
			goto retry_snap;
		}
	} else {
	} else {
		written = generic_file_buffered_write(iocb, iov, nr_segs,
		written = generic_file_buffered_write(iocb, iov, nr_segs,
						      pos, &iocb->ki_pos,
						      pos, &iocb->ki_pos,
@@ -796,13 +805,6 @@ static ssize_t ceph_aio_write(struct kiocb *iocb, const struct iovec *iov,
			written = err;
			written = err;
	}
	}


	if (written == -EOLDSNAPC) {
		dout("aio_write %p %llx.%llx %llu~%u got EOLDSNAPC, retrying\n",
		     inode, ceph_vinop(inode), pos, (unsigned)iov->iov_len);
		mutex_lock(&inode->i_mutex);
		hold_mutex = true;
		goto retry_snap;
	}
out:
out:
	if (hold_mutex)
	if (hold_mutex)
		mutex_unlock(&inode->i_mutex);
		mutex_unlock(&inode->i_mutex);