diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-10-16 15:47:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-10-16 15:47:02 -0400 |
commit | 59bcce121691da06c6b027088d38b76ba893e0cb (patch) | |
tree | 6b642eed0deb0aff9c5ffcfd6210a80da056bf92 /net | |
parent | a4c4c49a611321d1b10379f72f1267802437fc07 (diff) | |
parent | e30b7577bf1d338ca8a273bd2f881de5a41572b7 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
Pull Ceph fixes from Sage Weil:
"Just two small items from Ilya:
The first patch fixes the RBD readahead to grab full objects. The
second fixes the write ops to prevent undue promotion when a cache
tier is configured on the server side"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
rbd: use writefull op for object size writes
rbd: set max_sectors explicitly
Diffstat (limited to 'net')
-rw-r--r-- | net/ceph/osd_client.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index 80b94e37c94a..f79ccac6699f 100644 --- a/net/ceph/osd_client.c +++ b/net/ceph/osd_client.c | |||
@@ -285,6 +285,7 @@ static void osd_req_op_data_release(struct ceph_osd_request *osd_req, | |||
285 | switch (op->op) { | 285 | switch (op->op) { |
286 | case CEPH_OSD_OP_READ: | 286 | case CEPH_OSD_OP_READ: |
287 | case CEPH_OSD_OP_WRITE: | 287 | case CEPH_OSD_OP_WRITE: |
288 | case CEPH_OSD_OP_WRITEFULL: | ||
288 | ceph_osd_data_release(&op->extent.osd_data); | 289 | ceph_osd_data_release(&op->extent.osd_data); |
289 | break; | 290 | break; |
290 | case CEPH_OSD_OP_CALL: | 291 | case CEPH_OSD_OP_CALL: |
@@ -485,13 +486,14 @@ void osd_req_op_extent_init(struct ceph_osd_request *osd_req, | |||
485 | size_t payload_len = 0; | 486 | size_t payload_len = 0; |
486 | 487 | ||
487 | BUG_ON(opcode != CEPH_OSD_OP_READ && opcode != CEPH_OSD_OP_WRITE && | 488 | BUG_ON(opcode != CEPH_OSD_OP_READ && opcode != CEPH_OSD_OP_WRITE && |
488 | opcode != CEPH_OSD_OP_ZERO && opcode != CEPH_OSD_OP_TRUNCATE); | 489 | opcode != CEPH_OSD_OP_WRITEFULL && opcode != CEPH_OSD_OP_ZERO && |
490 | opcode != CEPH_OSD_OP_TRUNCATE); | ||
489 | 491 | ||
490 | op->extent.offset = offset; | 492 | op->extent.offset = offset; |
491 | op->extent.length = length; | 493 | op->extent.length = length; |
492 | op->extent.truncate_size = truncate_size; | 494 | op->extent.truncate_size = truncate_size; |
493 | op->extent.truncate_seq = truncate_seq; | 495 | op->extent.truncate_seq = truncate_seq; |
494 | if (opcode == CEPH_OSD_OP_WRITE) | 496 | if (opcode == CEPH_OSD_OP_WRITE || opcode == CEPH_OSD_OP_WRITEFULL) |
495 | payload_len += length; | 497 | payload_len += length; |
496 | 498 | ||
497 | op->payload_len = payload_len; | 499 | op->payload_len = payload_len; |
@@ -670,9 +672,11 @@ static u64 osd_req_encode_op(struct ceph_osd_request *req, | |||
670 | break; | 672 | break; |
671 | case CEPH_OSD_OP_READ: | 673 | case CEPH_OSD_OP_READ: |
672 | case CEPH_OSD_OP_WRITE: | 674 | case CEPH_OSD_OP_WRITE: |
675 | case CEPH_OSD_OP_WRITEFULL: | ||
673 | case CEPH_OSD_OP_ZERO: | 676 | case CEPH_OSD_OP_ZERO: |
674 | case CEPH_OSD_OP_TRUNCATE: | 677 | case CEPH_OSD_OP_TRUNCATE: |
675 | if (src->op == CEPH_OSD_OP_WRITE) | 678 | if (src->op == CEPH_OSD_OP_WRITE || |
679 | src->op == CEPH_OSD_OP_WRITEFULL) | ||
676 | request_data_len = src->extent.length; | 680 | request_data_len = src->extent.length; |
677 | dst->extent.offset = cpu_to_le64(src->extent.offset); | 681 | dst->extent.offset = cpu_to_le64(src->extent.offset); |
678 | dst->extent.length = cpu_to_le64(src->extent.length); | 682 | dst->extent.length = cpu_to_le64(src->extent.length); |
@@ -681,7 +685,8 @@ static u64 osd_req_encode_op(struct ceph_osd_request *req, | |||
681 | dst->extent.truncate_seq = | 685 | dst->extent.truncate_seq = |
682 | cpu_to_le32(src->extent.truncate_seq); | 686 | cpu_to_le32(src->extent.truncate_seq); |
683 | osd_data = &src->extent.osd_data; | 687 | osd_data = &src->extent.osd_data; |
684 | if (src->op == CEPH_OSD_OP_WRITE) | 688 | if (src->op == CEPH_OSD_OP_WRITE || |
689 | src->op == CEPH_OSD_OP_WRITEFULL) | ||
685 | ceph_osdc_msg_data_add(req->r_request, osd_data); | 690 | ceph_osdc_msg_data_add(req->r_request, osd_data); |
686 | else | 691 | else |
687 | ceph_osdc_msg_data_add(req->r_reply, osd_data); | 692 | ceph_osdc_msg_data_add(req->r_reply, osd_data); |