Whamcloud - gitweb
LU-2800 autoconf: move LC_BLK_QUEUE_MAX_SEGMENTS test
[fs/lustre-release.git] / lustre / quota / qsd_lib.c
index adb2f86..253f6b4 100644 (file)
@@ -21,7 +21,7 @@
  * GPL HEADER END
  */
 /*
- * Copyright (c) 2012, Intel Corporation.
+ * Copyright (c) 2012, 2013, Intel Corporation.
  * Use is subject to license terms.
  *
  * Author: Johann Lombardi <johann.lombardi@intel.com>
  * freed via qsd_fini().
  */
 
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
-
 #define DEBUG_SUBSYSTEM S_LQUOTA
 
 #include <obd_class.h>
 #include "qsd_internal.h"
 
-cfs_mem_cache_t *upd_kmem;
+struct kmem_cache *upd_kmem;
 
 struct lu_kmem_descr qsd_caches[] = {
        {
@@ -235,8 +231,6 @@ static int qsd_conn_callback(void *data)
        /* qsd_exp should now be valid */
        LASSERT(qsd->qsd_exp);
 
-       /* grab reference on namespace */
-       ldlm_namespace_get(class_exp2obd(qsd->qsd_exp)->obd_namespace);
        qsd->qsd_ns = class_exp2obd(qsd->qsd_exp)->obd_namespace;
 
        write_lock(&qsd->qsd_lock);
@@ -253,7 +247,7 @@ static int qsd_conn_callback(void *data)
         * step 3) will have to wait for qsd_start() to be called */
        for (type = USRQUOTA; type < MAXQUOTAS; type++) {
                struct qsd_qtype_info *qqi = qsd->qsd_type_array[type];
-               cfs_waitq_signal(&qqi->qqi_reint_thread.t_ctl_waitq);
+               wake_up(&qqi->qqi_reint_thread.t_ctl_waitq);
        }
 
        RETURN(0);
@@ -358,7 +352,7 @@ static int qsd_qtype_init(const struct lu_env *env, struct qsd_instance *qsd,
        qqi->qqi_glb_uptodate = false;
        qqi->qqi_slv_uptodate = false;
        qqi->qqi_reint        = false;
-       cfs_waitq_init(&qqi->qqi_reint_thread.t_ctl_waitq);
+       init_waitqueue_head(&qqi->qqi_reint_thread.t_ctl_waitq);
        thread_set_flags(&qqi->qqi_reint_thread, SVC_STOPPED);
        CFS_INIT_LIST_HEAD(&qqi->qqi_deferred_glb);
        CFS_INIT_LIST_HEAD(&qqi->qqi_deferred_slv);
@@ -475,9 +469,7 @@ void qsd_fini(const struct lu_env *env, struct qsd_instance *qsd)
                qsd_stop_reint_thread(qsd->qsd_type_array[qtype]);
        }
 
-       /* release reference on namespace */
        if (qsd->qsd_ns != NULL) {
-               ldlm_namespace_put(qsd->qsd_ns);
                qsd->qsd_ns = NULL;
        }
 
@@ -487,7 +479,7 @@ void qsd_fini(const struct lu_env *env, struct qsd_instance *qsd)
 
        /* deregister connection to the quota master */
        qsd->qsd_exp_valid = false;
-       lustre_deregister_osp_item(&qsd->qsd_exp);
+       lustre_deregister_lwp_item(&qsd->qsd_exp);
 
        /* release per-filesystem information */
        if (qsd->qsd_fsinfo != NULL) {
@@ -554,7 +546,7 @@ struct qsd_instance *qsd_init(const struct lu_env *env, char *svname,
        rwlock_init(&qsd->qsd_lock);
        CFS_INIT_LIST_HEAD(&qsd->qsd_link);
        thread_set_flags(&qsd->qsd_upd_thread, SVC_STOPPED);
-       cfs_waitq_init(&qsd->qsd_upd_thread.t_ctl_waitq);
+       init_waitqueue_head(&qsd->qsd_upd_thread.t_ctl_waitq);
        CFS_INIT_LIST_HEAD(&qsd->qsd_upd_list);
        spin_lock_init(&qsd->qsd_adjust_lock);
        CFS_INIT_LIST_HEAD(&qsd->qsd_adjust_list);
@@ -562,7 +554,9 @@ struct qsd_instance *qsd_init(const struct lu_env *env, char *svname,
        qsd->qsd_started = false;
 
        /* copy service name */
-       strncpy(qsd->qsd_svname, svname, MAX_OBD_NAME);
+       if (strlcpy(qsd->qsd_svname, svname, sizeof(qsd->qsd_svname))
+           >= sizeof(qsd->qsd_svname))
+               GOTO(out, rc = -E2BIG);
 
        /* grab reference on osd device */
        lu_device_get(&dev->dd_lu_dev);
@@ -709,7 +703,7 @@ int qsd_prepare(const struct lu_env *env, struct qsd_instance *qsd)
        }
 
        /* generate osp name */
-       rc = tgt_name2ospname((char *)qsd->qsd_svname, qti->qti_buf);
+       rc = tgt_name2lwpname((char *)qsd->qsd_svname, qti->qti_buf);
        if (rc) {
                CERROR("%s: failed to generate ospname (%d)\n",
                       qsd->qsd_svname, rc);
@@ -718,7 +712,7 @@ int qsd_prepare(const struct lu_env *env, struct qsd_instance *qsd)
 
        /* the connection callback will start the reintegration
         * procedure if quota is enabled */
-       rc = lustre_register_osp_item(qti->qti_buf, &qsd->qsd_exp,
+       rc = lustre_register_lwp_item(qti->qti_buf, &qsd->qsd_exp,
                                      qsd_conn_callback, (void *)qsd);
        if (rc) {
                CERROR("%s: fail to get connection to master (%d)\n",
@@ -768,7 +762,7 @@ int qsd_start(const struct lu_env *env, struct qsd_instance *qsd)
         * up to usage; If usage < granted, release down to usage.  */
        for (type = USRQUOTA; type < MAXQUOTAS; type++) {
                struct qsd_qtype_info   *qqi = qsd->qsd_type_array[type];
-               cfs_waitq_signal(&qqi->qqi_reint_thread.t_ctl_waitq);
+               wake_up(&qqi->qqi_reint_thread.t_ctl_waitq);
        }
 
        RETURN(rc);