From: huanghua Date: Thu, 27 Jul 2006 15:10:00 +0000 (+0000) Subject: fixed some open related thing according to inspection results X-Git-Tag: v1_8_0_110~486^2~1327 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=9c57d50eb9c9479b89f0b0fba21d61dce955b769;p=fs%2Flustre-release.git fixed some open related thing according to inspection results --- diff --git a/lustre/include/lustre_req_layout.h b/lustre/include/lustre_req_layout.h index f838833..3822717 100644 --- a/lustre/include/lustre_req_layout.h +++ b/lustre/include/lustre_req_layout.h @@ -100,6 +100,7 @@ extern const struct req_format RQF_MDS_PIN; extern const struct req_format RQF_MDS_CONNECT; extern const struct req_format RQF_MDS_DISCONNECT; extern const struct req_format RQF_MDS_READPAGE; +extern const struct req_format RQF_MDS_DONE_WRITING; /* * This is format of direct (non-intent) MDS_GETATTR_NAME request. diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index 9be8e73..71b2e3e 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -2606,11 +2606,7 @@ static int mdt_destroy_export(struct obd_export *export) class_handle_unhash(&mfd->mfd_handle); list_del_init(&mfd->mfd_list); spin_unlock(&med->med_open_lock); - - rc = mdt_mfd_close(&ctxt, mfd); - - if (rc) - CDEBUG(D_INODE|D_IOCTL, "Error closing file: %d\n", rc); + mdt_mfd_close(&ctxt, mfd); spin_lock(&med->med_open_lock); } spin_unlock(&med->med_open_lock); diff --git a/lustre/mdt/mdt_internal.h b/lustre/mdt/mdt_internal.h index 4794d9f..30e7ba4 100644 --- a/lustre/mdt/mdt_internal.h +++ b/lustre/mdt/mdt_internal.h @@ -353,8 +353,8 @@ int mdt_lock_new_child(struct mdt_thread_info *info, int mdt_reint_open(struct mdt_thread_info *info); -int mdt_mfd_close(const struct lu_context *ctxt, - struct mdt_file_data *mfd); +void mdt_mfd_close(const struct lu_context *ctxt, + struct mdt_file_data *mfd); int mdt_close(struct mdt_thread_info *info); diff --git a/lustre/mdt/mdt_open.c b/lustre/mdt/mdt_open.c index 16d223c..b7902b3 100644 --- a/lustre/mdt/mdt_open.c +++ b/lustre/mdt/mdt_open.c @@ -192,7 +192,7 @@ int mdt_open_by_fid(struct mdt_thread_info* info, const struct lu_fid *fid, o = mdt_object_find(info->mti_ctxt, info->mti_mdt, fid); if (!IS_ERR(o)) { - if (mdt_object_exists(info->mti_ctxt, &o->mot_obj.mo_lu)) { + if (mdt_object_exists(info->mti_ctxt, &o->mot_obj.mo_lu) > 0) { if (la->la_flags & MDS_OPEN_EXCL && la->la_flags & MDS_OPEN_CREAT) rc = -EEXIST; @@ -329,8 +329,8 @@ out: return result; } -int mdt_mfd_close(const struct lu_context *ctxt, - struct mdt_file_data *mfd) +void mdt_mfd_close(const struct lu_context *ctxt, + struct mdt_file_data *mfd) { ENTRY; @@ -346,7 +346,7 @@ int mdt_mfd_close(const struct lu_context *ctxt, mdt_object_put(ctxt, mfd->mfd_object); mdt_mfd_free(mfd); - RETURN(0); + EXIT; } int mdt_close(struct mdt_thread_info *info) @@ -395,7 +395,6 @@ int mdt_close(struct mdt_thread_info *info) if (rc == 0) rc = mdt_handle_last_unlink(info, o); } - mdt_mfd_close(info->mti_ctxt, mfd); } mdt_shrink_reply(info); @@ -404,7 +403,11 @@ int mdt_close(struct mdt_thread_info *info) int mdt_done_writing(struct mdt_thread_info *info) { + int rc; ENTRY; + req_capsule_set(&info->mti_pill, &RQF_MDS_DONE_WRITING); + rc = req_capsule_pack(&info->mti_pill); + RETURN(0); } diff --git a/lustre/ptlrpc/layout.c b/lustre/ptlrpc/layout.c index 915bf10..260815c 100644 --- a/lustre/ptlrpc/layout.c +++ b/lustre/ptlrpc/layout.c @@ -249,6 +249,7 @@ static const struct req_format *req_formats[] = { &RQF_MDS_CLOSE, &RQF_MDS_PIN, &RQF_MDS_READPAGE, + &RQF_MDS_DONE_WRITING }; struct req_msg_field { @@ -540,7 +541,6 @@ EXPORT_SYMBOL(RQF_LDLM_INTENT_UNLINK); const struct req_format RQF_MDS_CLOSE = DEFINE_REQ_FMT0("MDS_CLOSE", -// mdt_body_only, mdt_body_only); mdt_body_only, mds_last_unlink_server); EXPORT_SYMBOL(RQF_MDS_CLOSE); @@ -549,6 +549,11 @@ const struct req_format RQF_MDS_PIN = mdt_body_only, mdt_body_only); EXPORT_SYMBOL(RQF_MDS_PIN); +const struct req_format RQF_MDS_DONE_WRITING = + DEFINE_REQ_FMT0("MDS_DONE_WRITING", + mdt_body_only, mdt_body_only); +EXPORT_SYMBOL(RQF_MDS_DONE_WRITING); + const struct req_format RQF_MDS_READPAGE = DEFINE_REQ_FMT0("MDS_READPAGE", mdt_body_only, mdt_body_only);