Whamcloud - gitweb
fixed some open related thing according to inspection results
authorhuanghua <huanghua>
Thu, 27 Jul 2006 15:10:00 +0000 (15:10 +0000)
committerhuanghua <huanghua>
Thu, 27 Jul 2006 15:10:00 +0000 (15:10 +0000)
lustre/include/lustre_req_layout.h
lustre/mdt/mdt_handler.c
lustre/mdt/mdt_internal.h
lustre/mdt/mdt_open.c
lustre/ptlrpc/layout.c

index f838833..3822717 100644 (file)
@@ -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.
index 9be8e73..71b2e3e 100644 (file)
@@ -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);
index 4794d9f..30e7ba4 100644 (file)
@@ -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);
 
index 16d223c..b7902b3 100644 (file)
@@ -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);
 }
index 915bf10..260815c 100644 (file)
@@ -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);