From e8b29e09c125e4e0e9a6a39bae0516b8e0ac695a Mon Sep 17 00:00:00 2001 From: green Date: Thu, 23 Oct 2003 20:18:33 +0000 Subject: [PATCH] This is a bugfix for #1838. Most of the patch by A. Dilger, I only propagated parental time change to all operations, not only mkdir. --- lustre/mdc/mdc_internal.h | 6 ++---- lustre/mdc/mdc_lib.c | 16 ++++++++-------- lustre/mds/mds_lib.c | 3 +++ lustre/utils/wirecheck.c | 15 ++++----------- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/lustre/mdc/mdc_internal.h b/lustre/mdc/mdc_internal.h index 0605261..bab2ebb 100644 --- a/lustre/mdc/mdc_internal.h +++ b/lustre/mdc/mdc_internal.h @@ -9,12 +9,10 @@ void mdc_setattr_pack(struct ptlrpc_request *req, struct iattr *iattr, void *ea, int ealen, void *ea2, int ea2len); void mdc_create_pack(struct ptlrpc_request *req, int offset, - struct mdc_op_data *op_data, - __u32 mode, __u64 rdev, __u64 time, + struct mdc_op_data *op_data, __u32 mode, __u64 rdev, const void *data, int datalen); void mdc_open_pack(struct ptlrpc_request *req, int offset, - struct mdc_op_data *op_data, - __u32 mode, __u64 rdev, __u64 time, + struct mdc_op_data *op_data, __u32 mode, __u64 rdev, __u32 flags, const void *data, int datalen); void mdc_unlink_pack(struct ptlrpc_request *req, int offset, struct mdc_op_data *data); diff --git a/lustre/mdc/mdc_lib.c b/lustre/mdc/mdc_lib.c index 0c634eb..d573eea7 100644 --- a/lustre/mdc/mdc_lib.c +++ b/lustre/mdc/mdc_lib.c @@ -61,8 +61,7 @@ void mdc_pack_req_body(struct ptlrpc_request *req) /* packing of MDS records */ void mdc_create_pack(struct ptlrpc_request *req, int offset, - struct mdc_op_data *op_data, - __u32 mode, __u64 rdev, __u64 time, + struct mdc_op_data *op_data, __u32 mode, __u64 rdev, const void *data, int datalen) { struct mds_rec_create *rec; @@ -77,7 +76,7 @@ void mdc_create_pack(struct ptlrpc_request *req, int offset, memset(&rec->cr_replayfid, 0, sizeof(rec->cr_replayfid)); rec->cr_mode = mode; rec->cr_rdev = rdev; - rec->cr_time = time; + rec->cr_time = op_data->mod_time; rec->cr_suppgid = op_data->ctxt.gid1; tmp = lustre_msg_buf(req->rq_reqmsg, offset + 1, op_data->namelen + 1); @@ -91,8 +90,7 @@ void mdc_create_pack(struct ptlrpc_request *req, int offset, /* packing of MDS records */ void mdc_open_pack(struct ptlrpc_request *req, int offset, - struct mdc_op_data *op_data, - __u32 mode, __u64 rdev, __u64 time, + struct mdc_op_data *op_data, __u32 mode, __u64 rdev, __u32 flags, const void *lmm, int lmmlen) { struct mds_rec_create *rec; @@ -110,7 +108,7 @@ void mdc_open_pack(struct ptlrpc_request *req, int offset, rec->cr_mode = mode; rec->cr_flags = flags; rec->cr_rdev = rdev; - rec->cr_time = time; + rec->cr_time = op_data->mod_time; rec->cr_suppgid = op_data->ctxt.gid1; if (op_data->name) { @@ -126,8 +124,7 @@ void mdc_open_pack(struct ptlrpc_request *req, int offset, } } -void mdc_setattr_pack(struct ptlrpc_request *req, - struct mdc_op_data *data, +void mdc_setattr_pack(struct ptlrpc_request *req, struct mdc_op_data *data, struct iattr *iattr, void *ea, int ealen, void *ea2, int ea2len) { @@ -187,6 +184,7 @@ void mdc_unlink_pack(struct ptlrpc_request *req, int offset, rec->ul_suppgid = data->ctxt.gid1; rec->ul_fid1 = data->fid1; rec->ul_fid2 = data->fid2; + rec->ul_time = data->mod_time; tmp = lustre_msg_buf(req->rq_reqmsg, offset + 1, data->namelen + 1); LASSERT (tmp != NULL); @@ -209,6 +207,7 @@ void mdc_link_pack(struct ptlrpc_request *req, int offset, rec->lk_suppgid2 = data->ctxt.gid2; rec->lk_fid1 = data->fid1; rec->lk_fid2 = data->fid2; + rec->lk_time = data->mod_time; tmp = lustre_msg_buf(req->rq_reqmsg, offset + 1, data->namelen + 1); LOGL0(data->name, data->namelen, tmp); @@ -238,6 +237,7 @@ void mdc_rename_pack(struct ptlrpc_request *req, int offset, rec->rn_suppgid2 = -1; rec->rn_fid1 = data->fid1; rec->rn_fid2 = data->fid2; + rec->rn_time = data->mod_time; tmp = lustre_msg_buf(req->rq_reqmsg, offset + 1, oldlen + 1); LOGL0(old, oldlen, tmp); diff --git a/lustre/mds/mds_lib.c b/lustre/mds/mds_lib.c index 650c771..66d182c 100644 --- a/lustre/mds/mds_lib.c +++ b/lustre/mds/mds_lib.c @@ -198,6 +198,7 @@ static int mds_link_unpack(struct ptlrpc_request *req, int offset, r->ur_suppgid2 = rec->lk_suppgid2; r->ur_fid1 = &rec->lk_fid1; r->ur_fid2 = &rec->lk_fid2; + r->ur_time = rec->lk_time; LASSERT_REQSWAB (req, offset + 1); r->ur_name = lustre_msg_string (req->rq_reqmsg, offset + 1, 0); @@ -226,6 +227,7 @@ static int mds_unlink_unpack(struct ptlrpc_request *req, int offset, r->ur_suppgid2 = -1; r->ur_fid1 = &rec->ul_fid1; r->ur_fid2 = &rec->ul_fid2; + r->ur_time = rec->ul_time; LASSERT_REQSWAB (req, offset + 1); r->ur_name = lustre_msg_string(req->rq_reqmsg, offset + 1, 0); @@ -253,6 +255,7 @@ static int mds_rename_unpack(struct ptlrpc_request *req, int offset, r->ur_suppgid2 = rec->rn_suppgid2; r->ur_fid1 = &rec->rn_fid1; r->ur_fid2 = &rec->rn_fid2; + r->ur_time = rec->rn_time; LASSERT_REQSWAB (req, offset + 1); r->ur_name = lustre_msg_string(req->rq_reqmsg, offset + 1, 0); diff --git a/lustre/utils/wirecheck.c b/lustre/utils/wirecheck.c index ae6e217..8a66025 100644 --- a/lustre/utils/wirecheck.c +++ b/lustre/utils/wirecheck.c @@ -174,14 +174,6 @@ check_mds_status_req (void) } void -check_mds_fileh_body (void) -{ - BLANK_LINE (); - CHECK_STRUCT (mds_fileh_body); - CHECK_MEMBER (mds_fileh_body, f_fid); -} - -void check_mds_body (void) { BLANK_LINE (); @@ -263,6 +255,7 @@ check_mds_rec_link (void) CHECK_MEMBER (mds_rec_link, lk_suppgid2); CHECK_MEMBER (mds_rec_link, lk_fid1); CHECK_MEMBER (mds_rec_link, lk_fid2); + CHECK_MEMBER (mds_rec_link, lk_time); } void @@ -274,11 +267,11 @@ check_mds_rec_unlink (void) CHECK_MEMBER (mds_rec_unlink, ul_fsuid); CHECK_MEMBER (mds_rec_unlink, ul_fsgid); CHECK_MEMBER (mds_rec_unlink, ul_cap); - CHECK_MEMBER (mds_rec_unlink, ul_reserved); - CHECK_MEMBER (mds_rec_unlink, ul_mode); CHECK_MEMBER (mds_rec_unlink, ul_suppgid); + CHECK_MEMBER (mds_rec_unlink, ul_mode); CHECK_MEMBER (mds_rec_unlink, ul_fid1); CHECK_MEMBER (mds_rec_unlink, ul_fid2); + CHECK_MEMBER (mds_rec_unlink, ul_time); } void @@ -294,6 +287,7 @@ check_mds_rec_rename (void) CHECK_MEMBER (mds_rec_rename, rn_suppgid2); CHECK_MEMBER (mds_rec_rename, rn_fid1); CHECK_MEMBER (mds_rec_rename, rn_fid2); + CHECK_MEMBER (mds_rec_rename, rn_time); } void @@ -571,7 +565,6 @@ main (int argc, char **argv) check_ost_body (); check_ll_fid (); check_mds_status_req (); - check_mds_fileh_body (); check_mds_body (); check_mds_rec_setattr (); check_mds_rec_create (); -- 1.8.3.1