Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
LU-5577 ptlrpc: fix comparison between signed and unsigned
[fs/lustre-release.git]
/
lustre
/
quota
/
qsd_writeback.c
diff --git
a/lustre/quota/qsd_writeback.c
b/lustre/quota/qsd_writeback.c
index
a615877
..
e24f28c
100644
(file)
--- a/
lustre/quota/qsd_writeback.c
+++ b/
lustre/quota/qsd_writeback.c
@@
-54,14
+54,13
@@
static struct qsd_upd_rec *qsd_upd_alloc(struct qsd_qtype_info *qqi,
{
struct qsd_upd_rec *upd;
- OBD_SLAB_ALLOC_PTR_GFP(upd, upd_kmem,
__GFP_IO
);
+ OBD_SLAB_ALLOC_PTR_GFP(upd, upd_kmem,
GFP_NOFS
);
if (upd == NULL) {
- CERROR("Failed to allocate upd");
return NULL;
}
/* fill it */
-
CFS_
INIT_LIST_HEAD(&upd->qur_link);
+ INIT_LIST_HEAD(&upd->qur_link);
upd->qur_qqi = qqi;
upd->qur_lqe = lqe;
if (lqe)
@@
-97,7
+96,7
@@
static void qsd_upd_add(struct qsd_instance *qsd, struct qsd_upd_rec *upd)
}
/* must hold the qsd_lock */
-static void qsd_add_deferred(struct qsd_instance *qsd,
cfs_list_t
*list,
+static void qsd_add_deferred(struct qsd_instance *qsd,
struct list_head
*list,
struct qsd_upd_rec *upd)
{
struct qsd_upd_rec *tmp, *n;
@@
-111,7
+110,7
@@
static void qsd_add_deferred(struct qsd_instance *qsd, cfs_list_t *list,
}
/* Sort the updates in ascending order */
-
cfs_
list_for_each_entry_safe_reverse(tmp, n, list, qur_link) {
+ list_for_each_entry_safe_reverse(tmp, n, list, qur_link) {
/* There could be some legacy records which have duplicated
* version. Imagine following scenario: slave received global
@@
-124,23
+123,21
@@
static void qsd_add_deferred(struct qsd_instance *qsd, cfs_list_t *list,
LASSERT(tmp->qur_lqe);
LQUOTA_ERROR(tmp->qur_lqe, "Found a conflict record "
"with ver:"LPU64"", tmp->qur_ver);
-
cfs_
list_del_init(&tmp->qur_link);
+ list_del_init(&tmp->qur_link);
qsd_upd_free(tmp);
- }
-
- if (upd->qur_ver < tmp->qur_ver) {
+ } else if (upd->qur_ver < tmp->qur_ver) {
continue;
} else {
-
cfs_
list_add_tail(&upd->qur_link, &tmp->qur_link);
+ list_add_tail(&upd->qur_link, &tmp->qur_link);
return;
}
}
-
cfs_
list_add(&upd->qur_link, list);
+ list_add(&upd->qur_link, list);
}
/* must hold the qsd_lock */
-static void qsd_kickoff_deferred(struct qsd_qtype_info *qqi,
cfs_list_t *list,
- __u64 ver)
+static void qsd_kickoff_deferred(struct qsd_qtype_info *qqi,
+
struct list_head *list,
__u64 ver)
{
struct qsd_upd_rec *upd, *tmp;
ENTRY;
@@
-148,10
+145,10
@@
static void qsd_kickoff_deferred(struct qsd_qtype_info *qqi, cfs_list_t *list,
/* Get the first update record in the list, which has the smallest
* version, discard all records with versions smaller than the current
* one */
-
cfs_
list_for_each_entry_safe(upd, tmp, list, qur_link) {
+ list_for_each_entry_safe(upd, tmp, list, qur_link) {
if (upd->qur_ver <= ver) {
/* drop this update */
-
cfs_
list_del_init(&upd->qur_link);
+ list_del_init(&upd->qur_link);
CDEBUG(D_QUOTA, "%s: skipping deferred update ver:"
LPU64"/"LPU64", global:%d, qid:"LPU64"\n",
qqi->qqi_qsd->qsd_svname, upd->qur_ver, ver,
@@
-163,7
+160,7
@@
static void qsd_kickoff_deferred(struct qsd_qtype_info *qqi, cfs_list_t *list,
}
/* No remaining deferred update */
- if (
cfs_
list_empty(list))
+ if (list_empty(list))
RETURN_EXIT;
CDEBUG(D_QUOTA, "%s: found deferred update record. "
@@
-190,8
+187,8
@@
static void qsd_kickoff_deferred(struct qsd_qtype_info *qqi, cfs_list_t *list,
*/
void qsd_bump_version(struct qsd_qtype_info *qqi, __u64 ver, bool global)
{
-
cfs_list_t
*list;
- __u64 *idx_ver;
+
struct list_head
*list;
+ __u64
*idx_ver;
idx_ver = global ? &qqi->qqi_glb_ver : &qqi->qqi_slv_ver;
list = global ? &qqi->qqi_deferred_glb : &qqi->qqi_deferred_slv;
@@
-264,8
+261,8
@@
void qsd_upd_schedule(struct qsd_qtype_info *qqi, struct lquota_entry *lqe,
/* Out of order update (the one with smaller version hasn't
* reached slave or hasn't been flushed to disk yet), or
* the reintegration is in progress. Defer the update. */
-
cfs_list_t
*list = global ? &qqi->qqi_deferred_glb :
- &qqi->qqi_deferred_slv;
+
struct list_head
*list = global ? &qqi->qqi_deferred_glb :
+
&qqi->qqi_deferred_slv;
qsd_add_deferred(qsd, list, upd);
}
@@
-328,13
+325,13
@@
void qsd_adjust_schedule(struct lquota_entry *lqe, bool defer, bool cancel)
/* the lqe is being queued for the per-ID lock cancel, we should
* cancel the lock cancel and re-add it for quota adjust */
- if (!
cfs_
list_empty(&lqe->lqe_link) &&
+ if (!list_empty(&lqe->lqe_link) &&
lqe->lqe_adjust_time == 0) {
-
cfs_
list_del_init(&lqe->lqe_link);
+ list_del_init(&lqe->lqe_link);
lqe_putref(lqe);
}
- if (
cfs_
list_empty(&lqe->lqe_link)) {
+ if (list_empty(&lqe->lqe_link)) {
if (cancel)
lqe->lqe_adjust_time = 0;
else
@@
-343,10
+340,10
@@
void qsd_adjust_schedule(struct lquota_entry *lqe, bool defer, bool cancel)
cfs_time_current_64();
/* lqe reference transfered to list */
if (defer)
-
cfs_
list_add_tail(&lqe->lqe_link,
+ list_add_tail(&lqe->lqe_link,
&qsd->qsd_adjust_list);
else
-
cfs_
list_add(&lqe->lqe_link, &qsd->qsd_adjust_list);
+ list_add(&lqe->lqe_link, &qsd->qsd_adjust_list);
added = true;
}
spin_unlock(&qsd->qsd_adjust_lock);
@@
-359,19
+356,19
@@
void qsd_adjust_schedule(struct lquota_entry *lqe, bool defer, bool cancel)
/* return true if there is pending writeback records or the pending
* adjust requests */
-static bool qsd_job_pending(struct qsd_instance *qsd,
cfs_list_t
*upd,
+static bool qsd_job_pending(struct qsd_instance *qsd,
struct list_head
*upd,
bool *uptodate)
{
bool job_pending = false;
int qtype;
- LASSERT(
cfs_
list_empty(upd));
+ LASSERT(list_empty(upd));
*uptodate = true;
spin_lock(&qsd->qsd_adjust_lock);
- if (!
cfs_
list_empty(&qsd->qsd_adjust_list)) {
+ if (!list_empty(&qsd->qsd_adjust_list)) {
struct lquota_entry *lqe;
- lqe =
cfs_
list_entry(qsd->qsd_adjust_list.next,
+ lqe = list_entry(qsd->qsd_adjust_list.next,
struct lquota_entry, lqe_link);
if (cfs_time_beforeq_64(lqe->lqe_adjust_time,
cfs_time_current_64()))
@@
-380,8
+377,8
@@
static bool qsd_job_pending(struct qsd_instance *qsd, cfs_list_t *upd,
spin_unlock(&qsd->qsd_adjust_lock);
write_lock(&qsd->qsd_lock);
- if (!
cfs_
list_empty(&qsd->qsd_upd_list)) {
-
cfs_
list_splice_init(&qsd->qsd_upd_list, upd);
+ if (!list_empty(&qsd->qsd_upd_list)) {
+ list_splice_init(&qsd->qsd_upd_list, upd);
job_pending = true;
}
@@
-414,12
+411,12
@@
static int qsd_upd_thread(void *arg)
struct qsd_instance *qsd = (struct qsd_instance *)arg;
struct ptlrpc_thread *thread = &qsd->qsd_upd_thread;
struct l_wait_info lwi;
-
cfs_list_t
queue;
+
struct list_head
queue;
struct qsd_upd_rec *upd, *n;
struct lu_env *env;
int qtype, rc = 0;
bool uptodate;
- struct lquota_entry *lqe
, *tmp
;
+ struct lquota_entry *lqe;
__u64 cur_time;
ENTRY;
@@
-429,7
+426,7
@@
static int qsd_upd_thread(void *arg)
rc = lu_env_init(env, LCT_DT_THREAD);
if (rc) {
- CERROR("%s:
Fail to init env.", qsd->qsd_svname
);
+ CERROR("%s:
cannot init env: rc = %d\n", qsd->qsd_svname, rc
);
OBD_FREE_PTR(env);
RETURN(rc);
}
@@
-437,29
+434,30
@@
static int qsd_upd_thread(void *arg)
thread_set_flags(thread, SVC_RUNNING);
wake_up(&thread->t_ctl_waitq);
-
CFS_
INIT_LIST_HEAD(&queue);
+ INIT_LIST_HEAD(&queue);
lwi = LWI_TIMEOUT(cfs_time_seconds(QSD_WB_INTERVAL), NULL, NULL);
while (1) {
l_wait_event(thread->t_ctl_waitq,
qsd_job_pending(qsd, &queue, &uptodate) ||
!thread_is_running(thread), &lwi);
-
cfs_
list_for_each_entry_safe(upd, n, &queue, qur_link) {
-
cfs_
list_del_init(&upd->qur_link);
+ list_for_each_entry_safe(upd, n, &queue, qur_link) {
+ list_del_init(&upd->qur_link);
qsd_process_upd(env, upd);
qsd_upd_free(upd);
}
spin_lock(&qsd->qsd_adjust_lock);
cur_time = cfs_time_current_64();
- cfs_list_for_each_entry_safe(lqe, tmp, &qsd->qsd_adjust_list,
- lqe_link) {
+ while (!list_empty(&qsd->qsd_adjust_list)) {
+ lqe = list_entry(qsd->qsd_adjust_list.next,
+ struct lquota_entry, lqe_link);
/* deferred items are sorted by time */
if (!cfs_time_beforeq_64(lqe->lqe_adjust_time,
cur_time))
break;
-
cfs_
list_del_init(&lqe->lqe_link);
+ list_del_init(&lqe->lqe_link);
spin_unlock(&qsd->qsd_adjust_lock);
if (thread_is_running(thread) && uptodate) {
@@
-495,13
+493,13
@@
int qsd_start_upd_thread(struct qsd_instance *qsd)
{
struct ptlrpc_thread *thread = &qsd->qsd_upd_thread;
struct l_wait_info lwi = { 0 };
-
cfs_task_
t *task;
+
struct task_struc
t *task;
ENTRY;
task = kthread_run(qsd_upd_thread, (void *)qsd,
"lquota_wb_%s", qsd->qsd_svname);
if (IS_ERR(task)) {
- CERROR("
Fail to start quota update thread. rc:
%ld\n",
+ CERROR("
fail to start quota update thread: rc =
%ld\n",
PTR_ERR(task));
thread_set_flags(thread, SVC_STOPPED);
RETURN(PTR_ERR(task));
@@
-525,8
+523,8
@@
static void qsd_cleanup_deferred(struct qsd_instance *qsd)
continue;
write_lock(&qsd->qsd_lock);
-
cfs_
list_for_each_entry_safe(upd, tmp, &qqi->qqi_deferred_glb,
-
qur_link) {
+ list_for_each_entry_safe(upd, tmp, &qqi->qqi_deferred_glb,
+ qur_link) {
CWARN("%s: Free global deferred upd: ID:"LPU64", "
"ver:"LPU64"/"LPU64"\n", qsd->qsd_svname,
upd->qur_qid.qid_uid, upd->qur_ver,
@@
-534,8
+532,8
@@
static void qsd_cleanup_deferred(struct qsd_instance *qsd)
list_del_init(&upd->qur_link);
qsd_upd_free(upd);
}
-
cfs_
list_for_each_entry_safe(upd, tmp, &qqi->qqi_deferred_slv,
-
qur_link) {
+ list_for_each_entry_safe(upd, tmp, &qqi->qqi_deferred_slv,
+ qur_link) {
CWARN("%s: Free slave deferred upd: ID:"LPU64", "
"ver:"LPU64"/"LPU64"\n", qsd->qsd_svname,
upd->qur_qid.qid_uid, upd->qur_ver,
@@
-552,10
+550,10
@@
static void qsd_cleanup_adjust(struct qsd_instance *qsd)
struct lquota_entry *lqe;
spin_lock(&qsd->qsd_adjust_lock);
- while (!
cfs_
list_empty(&qsd->qsd_adjust_list)) {
- lqe =
cfs_
list_entry(qsd->qsd_adjust_list.next,
-
struct lquota_entry, lqe_link);
-
cfs_
list_del_init(&lqe->lqe_link);
+ while (!list_empty(&qsd->qsd_adjust_list)) {
+ lqe = list_entry(qsd->qsd_adjust_list.next,
+ struct lquota_entry, lqe_link);
+ list_del_init(&lqe->lqe_link);
lqe_putref(lqe);
}
spin_unlock(&qsd->qsd_adjust_lock);