int type;
LASSERT(pool != NULL);
+ if (unlikely(!test_bit(QPI_FLAG_STATE_INITED, &pool->qpi_flags)))
+ return -ENOENT;
seq_printf(m, "pool:\n"
" id: %u\n"
" type: %s\n"
- " ref: %d\n"
- " least qunit: %lu\n",
+ " refcount: %d\n"
+ " least_qunit: %lu\n",
0,
RES_NAME(pool->qpi_rtype),
atomic_read(&pool->qpi_ref),
for (type = 0; type < LL_MAXQUOTAS; type++)
seq_printf(m, " %s:\n"
- " #slv: %d\n"
- " #lqe: %d\n",
+ " quota_servers: %d\n"
+ " quota_entries: %d\n",
qtype_name(type),
qpi_slv_nr(pool, type),
atomic_read(&pool->qpi_site[type]->lqs_hash->hs_count));
{
struct qmt_pool_info *pool = m->private;
LASSERT(pool != NULL);
+ if (unlikely(!test_bit(QPI_FLAG_STATE_INITED, &pool->qpi_flags)))
+ return -ENOENT;
seq_printf(m, "%lu\n", pool->qpi_soft_least_qunit);
return 0;
int rc;
LASSERT(pool != NULL);
+ if (unlikely(!test_bit(QPI_FLAG_STATE_INITED, &pool->qpi_flags)))
+ return -ENOENT;
/* Not tuneable for inode limit */
if (pool->qpi_rtype != LQUOTA_RES_DT)
init_rwsem(&pool->qpi_recalc_sem);
pool->qpi_rtype = pool_type;
+ pool->qpi_flags = 0;
/* initialize refcount to 1, hash table will then grab an additional
* reference */
/* parse list of pool and destroy each element */
list_for_each_entry_safe(pool, tmp, &qmt->qmt_pool_list, qpi_linkage) {
+ /* stop all recalc threads - it may hold qpi reference */
+ qmt_stop_pool_recalc(pool);
/* release extra reference taken in qmt_pool_alloc */
qpi_putref(env, pool);
}
qmt->qmt_svname, PFID(&qti->qti_fid), rc);
#endif
}
+ set_bit(QPI_FLAG_STATE_INITED, &pool->qpi_flags);
if (name)
break;
}
while (obd->obd_process_conf)
schedule_timeout_uninterruptible(cfs_time_seconds(1));
+ OBD_FAIL_TIMEOUT(OBD_FAIL_QUOTA_RECALC, cfs_fail_val);
sem = qmt_sarr_rwsem(pool);
LASSERT(sem);
down_read(sem);
int rc, idx;
ENTRY;
+ if (qmt->qmt_stopping)
+ RETURN(0);
+
if (strnlen(poolname, LOV_MAXPOOLNAME + 1) > LOV_MAXPOOLNAME)
RETURN(-ENAMETOOLONG);
rc = add ? qmt_sarr_pool_add(qpi, idx, 32) :
qmt_sarr_pool_rem(qpi, idx);
if (rc) {
- CERROR("%s: can't %s %s pool %s: rc = %d\n",
- add ? "add to" : "remove", obd->obd_name,
- slavename, poolname, rc);
+ /* message is checked in sanity-quota test_1b */
+ CERROR("%s: can't %s %s pool '%s': rc = %d\n",
+ obd->obd_name, add ? "add to" : "remove", slavename,
+ poolname, rc);
GOTO(out_putref, rc);
}
qmt_pool_slv_nr_change(&env, qpi, idx, add);