Whamcloud - gitweb
add a skeleton for close.
authorhuanghua <huanghua>
Tue, 27 Jun 2006 07:32:36 +0000 (07:32 +0000)
committerhuanghua <huanghua>
Tue, 27 Jun 2006 07:32:36 +0000 (07:32 +0000)
some small fix in mdt_hander.c

lustre/include/lustre_req_layout.h
lustre/mdt/mdt_handler.c
lustre/mdt/mdt_reint.c
lustre/ptlrpc/layout.c

index 7ec55d5..05bac3e 100644 (file)
@@ -95,6 +95,7 @@ extern const struct req_format RQF_MDS_SYNC;
 extern const struct req_format RQF_MDS_GETXATTR;
 extern const struct req_format RQF_MDS_SETXATTR;
 extern const struct req_format RQF_MDS_GETATTR;
+extern const struct req_format RQF_MDS_CLOSE;
 extern const struct req_format RQF_MDS_CONNECT;
 extern const struct req_format RQF_MDS_DISCONNECT;
 
index eb2062f..609bed6 100644 (file)
@@ -467,10 +467,8 @@ static struct mdt_device *mdt_dev(struct lu_device *d)
 static int mdt_connect(struct mdt_thread_info *info)
 {
         int result;
-        struct req_capsule *pill;
         struct ptlrpc_request *req;
 
-        pill = &info->mti_pill;
         req = mdt_info_req(info);
         result = target_handle_connect(req, mdt_handle);
         if (result == 0) {
@@ -569,6 +567,15 @@ static int mdt_reint(struct mdt_thread_info *info)
 
 static int mdt_close(struct mdt_thread_info *info)
 {
+#ifdef MDT_CODE
+        /* TODO: dual to open handling, orphan handling */
+        struct mdt_body * reqbody;
+        struct mdt_body * repbody;
+
+        reqbody = req_capsule_client_get(&info->mti_pill, &RMF_MDT_BODY);
+        repbody = req_capsule_server_get(&info->mti_pill, &RMF_MDT_BODY);
+
+#endif
         return -EOPNOTSUPP;
 }
 
@@ -579,15 +586,22 @@ static int mdt_done_writing(struct mdt_thread_info *info)
 
 static int mdt_pin(struct mdt_thread_info *info)
 {
+#ifdef MDT_CODE
+        /* TODO: This is open handling. */
+#endif
         return -EOPNOTSUPP;
 }
 
 #ifdef MDT_CODE
+/* TODO these two methods not available now. */
+
+/* this should sync the whole device */
 static int mdt_device_sync(struct mdt_device *mdt)
 {
         return 0;
 }
 
+/* this should sync this object */
 static int mdt_object_sync(struct mdt_object *m)
 {
         return 0;
@@ -600,6 +614,7 @@ static int mdt_sync(struct mdt_thread_info *info)
         int rc;
         ENTRY;
 
+        /* The fid may be zero, so we req_capsule_set manually */
         req_capsule_set(pill, &RQF_MDS_SYNC);
 
         body = req_capsule_client_get(pill, &RMF_MDT_BODY);
@@ -2265,7 +2280,7 @@ static int mdt_obd_connect(struct lustre_handle *conn, struct obd_device *obd,
         int rc;
         struct mdt_device *mdt;
         struct mds_export_data *med;
-        struct mds_client_data *mcd = NULL;
+        struct mds_client_data *mcd;
         ENTRY;
 
         if (!conn || !obd || !cluuid)
@@ -2488,7 +2503,7 @@ DEF_MDT_HNDL_F(HABEO_CORPUS,              GETXATTR,     mdt_getxattr),
 DEF_MDT_HNDL_F(0           |HABEO_REFERO, STATFS,       mdt_statfs),
 DEF_MDT_HNDL_0(HABEO_CORPUS,              READPAGE,     mdt_readpage),
 DEF_MDT_HNDL_F(0,                         REINT,        mdt_reint),
-DEF_MDT_HNDL_0(HABEO_CORPUS,              CLOSE,        mdt_close),
+DEF_MDT_HNDL_F(HABEO_CORPUS|HABEO_REFERO, CLOSE,        mdt_close),
 DEF_MDT_HNDL_0(0,                         DONE_WRITING, mdt_done_writing),
 DEF_MDT_HNDL_0(0,                         PIN,          mdt_pin),
 DEF_MDT_HNDL_0(0,                         SYNC,         mdt_sync),
index 65e9031..6ab98b9 100644 (file)
@@ -465,10 +465,10 @@ out_unlock_source:
         RETURN(-EOPNOTSUPP);
 }
 
+#ifdef MDT_CODE
 /* partial operation for rename */
 static int mdt_reint_rename_tgt(struct mdt_thread_info *info)
 {
-#ifdef MDT_CODE
         struct lu_attr *attr = &info->mti_attr;
         struct mdt_reint_record *rr = &info->mti_rr;
         struct req_capsule *pill = &info->mti_pill;
@@ -534,9 +534,8 @@ out_unlock_tgtdir:
         mdt_object_put(info->mti_ctxt, mtgtdir);
 out:
         return rc;
-#endif
 }
-
+#endif
 
 
 static int mdt_reint_rename(struct mdt_thread_info *info)
index 603c242..0c9ec7f 100644 (file)
@@ -221,6 +221,12 @@ static const struct req_msg_field *mds_getattr_server[] = {
 #endif
 };
 
+static const struct req_msg_field *mds_close_server[] = {
+        &RMF_MDT_BODY,
+        &RMF_MDT_MD,
+        &RMF_LOGCOOKIES
+};
+
 static const struct req_format *req_formats[] = {
         &RQF_MDS_CONNECT,
         &RQF_MDS_DISCONNECT,
@@ -232,6 +238,8 @@ static const struct req_format *req_formats[] = {
         &RQF_MDS_REINT_CREATE,
         &RQF_MDS_REINT_OPEN,
         &RQF_MDS_REINT_UNLINK,
+        &RQF_MDS_REINT_LINK,
+        &RQF_MDS_REINT_RENAME,
         &RQF_MDS_REINT_SETATTR,
         &RQF_LDLM_ENQUEUE,
         &RQF_LDLM_INTENT,
@@ -243,7 +251,8 @@ static const struct req_format *req_formats[] = {
         &RQF_FLD_QUERY,
         &RQF_MDS_GETXATTR,
         &RQF_MDS_SETXATTR,
-        &RQF_MDS_SYNC
+        &RQF_MDS_SYNC,
+        &RQF_MDS_CLOSE
 };
 
 struct req_msg_field {
@@ -379,11 +388,13 @@ const struct req_msg_field RMF_REC_SETATTR =
                     lustre_swab_mdt_rec_setattr);
 EXPORT_SYMBOL(RMF_REC_SETATTR);
 
+/* Huang Hua changed the size from 0 to 16 to avoid ASSERT failure */
+
 const struct req_msg_field RMF_EADATA = DEFINE_MSGF("eadata", 0, 16, NULL);
 EXPORT_SYMBOL(RMF_EADATA);
 
 const struct req_msg_field RMF_LOGCOOKIES =
-        DEFINE_MSGF("logcookies", 0, 0, NULL);
+        DEFINE_MSGF("logcookies", 0, 16, NULL);
 EXPORT_SYMBOL(RMF_LOGCOOKIES);
 
 const struct req_msg_field RMF_REINT_OPC =
@@ -531,6 +542,11 @@ const struct req_format RQF_LDLM_INTENT_UNLINK =
                         ldlm_intent_unlink_client, ldlm_intent_server);
 EXPORT_SYMBOL(RQF_LDLM_INTENT_UNLINK);
 
+const struct req_format RQF_MDS_CLOSE =
+        DEFINE_REQ_FMT0("MDS_CLOSE",
+                        mdt_body_only, mds_close_server);
+EXPORT_SYMBOL(RQF_MDS_CLOSE);
+
 #if !defined(__REQ_LAYOUT_USER__)
 
 int req_layout_init(void)