return qmt;
}
+/* Run QMT0000 pool operations only for MDT0000 */
+static inline bool lod_pool_need_qmt0(const char *obd_name)
+{
+ __u32 idx;
+ int type;
+
+ type = server_name2index(obd_name, &idx, NULL);
+
+ return type == LDD_F_SV_TYPE_MDT && idx == 0;
+}
+
static int lod_pool_new_q(struct obd_device *obd, char *poolname)
{
int err = lod_pool_new(obd, poolname);
- if (!err) {
+ if (!err && lod_pool_need_qmt0(obd->obd_name)) {
obd = obd_find_qmt0(obd->obd_name);
if (obd)
obd_pool_new(obd, poolname);
{
int err = lod_pool_remove(obd, poolname, ostname);
- if (!err) {
+ if (!err && lod_pool_need_qmt0(obd->obd_name)) {
obd = obd_find_qmt0(obd->obd_name);
if (obd)
obd_pool_rem(obd, poolname, ostname);
{
int err = lod_pool_add(obd, poolname, ostname);
- if (!err) {
+ if (!err && lod_pool_need_qmt0(obd->obd_name)) {
obd = obd_find_qmt0(obd->obd_name);
if (obd)
obd_pool_add(obd, poolname, ostname);
{
int err = lod_pool_del(obd, poolname);
- if (!err) {
+ if (!err && lod_pool_need_qmt0(obd->obd_name)) {
obd = obd_find_qmt0(obd->obd_name);
if (obd)
obd_pool_del(obd, poolname);
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);
pool_add_targets $qpool 0 $(($OSTCOUNT - 1)) ||
error "pool_add_targets failed"
+ # check qmt_pool_add dmesg error
+ local msg_rgx="QMT0000: can't add to $FSNAME-OST0000.*pool.*$qpool"
+ local dmesg_err
+ dmesg_err=$(do_facet mds1 dmesg | grep "$msg_rgx" | tail -1)
+ [[ -z "$dmesg_err" ]] || error "found qmt_pool_add error: $dmesg_err"
+
$LFS setquota -u $TSTUSR -B ${limit}M --pool $qpool $DIR ||
error "set user quota failed"