From 273e83e56097fb473a8ab67e24a9770ecd260cc0 Mon Sep 17 00:00:00 2001 From: adilger Date: Tue, 29 Oct 2002 07:51:51 +0000 Subject: [PATCH] While we are breaking BA OST compatibility, swap the osc_punch packing of "start" and "end" so that "start" is in o_size, which is more consistent with setting i_size on truncate. Also add some more FIXMEs for bug 288. --- lustre/osc/osc_request.c | 9 ++++----- lustre/ost/ost_handler.c | 12 +++++++++--- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c index 3e26333..6cd994e 100644 --- a/lustre/osc/osc_request.c +++ b/lustre/osc/osc_request.c @@ -244,11 +244,10 @@ static int osc_punch(struct lustre_handle *conn, struct obdo *oa, #warning FIXME: pack only valid fields instead of memcpy, endianness, valid memcpy(&body->oa, oa, sizeof(*oa)); - /* overload the blocks and size fields in the oa with start/end */ -#warning FIXME: endianness, size=start, blocks=end? - body->oa.o_blocks = start; - body->oa.o_size = end; - body->oa.o_valid |= OBD_MD_FLBLOCKS | OBD_MD_FLSIZE; + /* overload the size and blocks fields in the oa with start/end */ + body->oa.o_size = HTON__u64(start); + body->oa.o_blocks = HTON__u64(end); + body->oa.o_valid |= HTON__u32(OBD_MD_FLSIZE | OBD_MD_FLBLOCKS); request->rq_replen = lustre_msg_size(1, &size); diff --git a/lustre/ost/ost_handler.c b/lustre/ost/ost_handler.c index 4ea6dea..2be26cc 100644 --- a/lustre/ost/ost_handler.c +++ b/lustre/ost/ost_handler.c @@ -70,6 +70,7 @@ static int ost_getattr(struct ptlrpc_request *req) RETURN(rc); repbody = lustre_msg_buf(req->rq_repmsg, 0); + /* FIXME: unpack only valid fields instead of memcpy, endianness */ memcpy(&repbody->oa, &body->oa, sizeof(body->oa)); req->rq_status = obd_getattr(conn, &repbody->oa, NULL); RETURN(0); @@ -114,6 +115,7 @@ static int ost_open(struct ptlrpc_request *req) RETURN(rc); repbody = lustre_msg_buf(req->rq_repmsg, 0); + /* FIXME: unpack only valid fields instead of memcpy, endianness */ memcpy(&repbody->oa, &body->oa, sizeof(body->oa)); req->rq_status = obd_open(conn, &repbody->oa, NULL); RETURN(0); @@ -133,6 +135,7 @@ static int ost_close(struct ptlrpc_request *req) RETURN(rc); repbody = lustre_msg_buf(req->rq_repmsg, 0); + /* FIXME: unpack only valid fields instead of memcpy, endianness */ memcpy(&repbody->oa, &body->oa, sizeof(body->oa)); req->rq_status = obd_close(conn, &repbody->oa, NULL); RETURN(0); @@ -152,6 +155,7 @@ static int ost_create(struct ptlrpc_request *req) RETURN(rc); repbody = lustre_msg_buf(req->rq_repmsg, 0); + /* FIXME: unpack only valid fields instead of memcpy, endianness */ memcpy(&repbody->oa, &body->oa, sizeof(body->oa)); req->rq_status = obd_create(conn, &repbody->oa, NULL); RETURN(0); @@ -166,8 +170,8 @@ static int ost_punch(struct ptlrpc_request *req) body = lustre_msg_buf(req->rq_reqmsg, 0); - if (!(body->oa.o_valid & OBD_MD_FLSIZE) || - !(body->oa.o_valid & OBD_MD_FLBLOCKS)) + if (NTOH__u32(body->oa.o_valid) & (OBD_MD_FLSIZE | OBD_MD_FLBLOCKS) != + (OBD_MD_FLSIZE | OBD_MD_FLBLOCKS)) RETURN(-EINVAL); rc = lustre_pack_msg(1, &size, NULL, &req->rq_replen, &req->rq_repmsg); @@ -175,9 +179,10 @@ static int ost_punch(struct ptlrpc_request *req) RETURN(rc); repbody = lustre_msg_buf(req->rq_repmsg, 0); + /* FIXME: unpack only valid fields instead of memcpy, endianness */ memcpy(&repbody->oa, &body->oa, sizeof(body->oa)); req->rq_status = obd_punch(conn, &repbody->oa, NULL, - repbody->oa.o_blocks, repbody->oa.o_size); + repbody->oa.o_size, repbody->oa.o_blocks); RETURN(0); } @@ -195,6 +200,7 @@ static int ost_setattr(struct ptlrpc_request *req) RETURN(rc); repbody = lustre_msg_buf(req->rq_repmsg, 0); + /* FIXME: unpack only valid fields instead of memcpy, endianness */ memcpy(&repbody->oa, &body->oa, sizeof(body->oa)); req->rq_status = obd_setattr(conn, &repbody->oa, NULL); RETURN(0); -- 1.8.3.1