Whamcloud - gitweb
LU-6301 llite: cleanup open handle for client open failure
[fs/lustre-release.git] / lustre / mdt / mdt_coordinator.c
index 0a43d93..e4f8ec1 100644 (file)
  * GPL HEADER END
  */
 /*
- * Copyright (c) 2012, 2013, Intel Corporation.
- * Use is subject to license terms.
  * Copyright (c) 2011, 2012 Commissariat a l'energie atomique et aux energies
  *                          alternatives
+ *
+ * Copyright (c) 2013, 2014, Intel Corporation.
+ * Use is subject to license terms.
  */
 /*
  * lustre/mdt/mdt_coordinator.c
@@ -45,7 +46,7 @@
 #include <lustre_log.h>
 #include "mdt_internal.h"
 
-static struct lprocfs_seq_vars lprocfs_mdt_hsm_vars[];
+static struct lprocfs_vars lprocfs_mdt_hsm_vars[];
 
 /**
  * get obj and HSM attributes on a fid
@@ -336,6 +337,15 @@ static int mdt_coordinator_cb(const struct lu_env *env,
                                       hsm_copytool_action2name(
                                                     larr->arr_hai.hai_action));
 
+                       if (rc == -ENOENT) {
+                               /* The request no longer exists, forget
+                                * about it, and do not send a cancel request
+                                * to the client, for which an error will be
+                                * sent back, leading to an endless cycle of
+                                * cancellation. */
+                               RETURN(LLOG_DEL_RECORD);
+                       }
+
                        /* add the cookie to the list of record to be
                         * canceled by caller */
                        if (hsd->max_cookie == (hsd->cookie_cnt - 1)) {
@@ -391,7 +401,7 @@ int hsm_cdt_procfs_init(struct mdt_device *mdt)
        ENTRY;
 
        /* init /proc entries, failure is not critical */
-       cdt->cdt_proc_dir = lprocfs_seq_register("hsm",
+       cdt->cdt_proc_dir = lprocfs_register("hsm",
                                             mdt2obd_dev(mdt)->obd_proc_entry,
                                             lprocfs_mdt_hsm_vars, mdt);
        if (IS_ERR(cdt->cdt_proc_dir)) {
@@ -423,7 +433,7 @@ void  hsm_cdt_procfs_fini(struct mdt_device *mdt)
  * \param none
  * \retval var vector
  */
-struct lprocfs_seq_vars *hsm_cdt_get_proc_vars(void)
+struct lprocfs_vars *hsm_cdt_get_proc_vars(void)
 {
        return lprocfs_mdt_hsm_vars;
 }
@@ -439,7 +449,7 @@ static int mdt_coordinator(void *data)
        struct mdt_thread_info  *mti = data;
        struct mdt_device       *mdt = mti->mti_mdt;
        struct coordinator      *cdt = &mdt->mdt_coordinator;
-       struct hsm_scan_data     hsd = { 0 };
+       struct hsm_scan_data     hsd = { NULL };
        int                      rc = 0;
        ENTRY;
 
@@ -868,9 +878,9 @@ int mdt_hsm_cdt_init(struct mdt_device *mdt)
        init_rwsem(&cdt->cdt_request_lock);
        mutex_init(&cdt->cdt_restore_lock);
 
-       CFS_INIT_LIST_HEAD(&cdt->cdt_requests);
-       CFS_INIT_LIST_HEAD(&cdt->cdt_agents);
-       CFS_INIT_LIST_HEAD(&cdt->cdt_restore_hdl);
+       INIT_LIST_HEAD(&cdt->cdt_requests);
+       INIT_LIST_HEAD(&cdt->cdt_agents);
+       INIT_LIST_HEAD(&cdt->cdt_restore_hdl);
 
        rc = lu_env_init(&cdt->cdt_env, LCT_MD_THREAD);
        if (rc < 0)
@@ -2203,7 +2213,7 @@ LPROC_SEQ_FOPS(mdt_hsm_user_request_mask);
 LPROC_SEQ_FOPS(mdt_hsm_group_request_mask);
 LPROC_SEQ_FOPS(mdt_hsm_other_request_mask);
 
-static struct lprocfs_seq_vars lprocfs_mdt_hsm_vars[] = {
+static struct lprocfs_vars lprocfs_mdt_hsm_vars[] = {
        { .name =       "agents",
          .fops =       &mdt_hsm_agent_fops                     },
        { .name =       "actions",