From 29288dda431cad667b3666c50c37e484fb832f67 Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Mon, 8 Dec 2014 17:37:02 +0000 Subject: [PATCH] Revert "LU-4820 osd: drop memcpy in zfs osd" This caused review-zfs sanity test_44 to fail in all test cases. This reverts commit 1249edcd71e6a44f92aba1482201b30696e85d0d. Change-Id: I972c4c68ee67443c999ce74fda6f6960b0e4b30d Reviewed-on: http://review.whamcloud.com/12990 Reviewed-by: Oleg Drokin Tested-by: Oleg Drokin --- lustre/osd-zfs/osd_io.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lustre/osd-zfs/osd_io.c b/lustre/osd-zfs/osd_io.c index 829226b..284e886 100644 --- a/lustre/osd-zfs/osd_io.c +++ b/lustre/osd-zfs/osd_io.c @@ -721,25 +721,25 @@ static int osd_read_prep(const struct lu_env *env, struct dt_object *dt, struct niobuf_local *lnb, int npages) { struct osd_object *obj = osd_dt_obj(dt); - loff_t size; - int i; + struct lu_buf buf; + loff_t offset; + int i; LASSERT(dt_object_exists(dt)); LASSERT(obj->oo_db); - read_lock(&obj->oo_attr_lock); - size = obj->oo_attr.la_size; - read_unlock(&obj->oo_attr_lock); - for (i = 0; i < npages; i++) { - if (unlikely(lnb[i].lnb_rc < 0)) - continue; - - lnb[i].lnb_rc = lnb[i].lnb_len; + buf.lb_buf = kmap(lnb[i].lnb_page); + buf.lb_len = lnb[i].lnb_len; + offset = lnb[i].lnb_file_offset; - if (lnb[i].lnb_file_offset + lnb[i].lnb_len > size) { - lnb[i].lnb_rc = size - lnb[i].lnb_file_offset; + CDEBUG(D_OTHER, "read %u bytes at %u\n", + (unsigned) lnb[i].lnb_len, + (unsigned) lnb[i].lnb_file_offset); + lnb[i].lnb_rc = osd_read(env, dt, &buf, &offset, NULL); + kunmap(lnb[i].lnb_page); + if (lnb[i].lnb_rc < buf.lb_len) { /* all subsequent rc should be 0 */ while (++i < npages) lnb[i].lnb_rc = 0; -- 1.8.3.1