* 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[] = {
{
/* 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);
* 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);
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);
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;
}
/* 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) {
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);
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);
}
/* 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);
/* 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",
* 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);