Setting max_create_count to 0 causes setting create_count
to 0. Set create_count to OST_MIN_PRECREATE when setting
back max_create_count.
Without the patch create_count remains equal to 0 despite
on changing max_create_count to something != 0.
This causes create to stuck in osp_precreate_reserve
because osp_precreate_send doesn't send new request to OST.
To understand the number of objects to precreate(grow) it
uses opd_pre_create_count that is equal to 0.
Cray-bug-id: LUS-6435
Change-Id: I940c48f91e9c7d49b766bd85ea271ce229424c7f
Signed-off-by: Sergey Cheremencev <c17829@cray.com>
Reviewed-on: https://es-gerrit.dev.cray.com/153888
Reviewed-by: Alexander Zarochentsev <c17826@cray.com>
Reviewed-by: Artem Blagodarenko <c17828@cray.com>
Tested-by: Elena Gryaznova <c17455@cray.com>
Reviewed-on: https://review.whamcloud.com/33559
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
- if (val < 0 || val > INT_MAX)
- return -ERANGE;
- if (val > OST_MAX_PRECREATE)
+ if (val && (val < OST_MIN_PRECREATE ||
+ val > OST_MAX_PRECREATE))
return -ERANGE;
if (osp->opd_pre_create_count > val)
osp->opd_pre_create_count = val;
return -ERANGE;
if (osp->opd_pre_create_count > val)
osp->opd_pre_create_count = val;
+ /* Can be 0 after setting max_create_count to 0 */
+ if (osp->opd_pre_create_count == 0 && val != 0)
+ osp->opd_pre_create_count = OST_MIN_PRECREATE;
+
osp->opd_pre_max_create_count = val;
return count;
osp->opd_pre_max_create_count = val;
return count;
}
run_test 65j "set default striping on root directory (bug 6367)="
}
run_test 65j "set default striping on root directory (bug 6367)="
rm -rf $DIR/$tdir
wait_delete_completed
do_facet $SINGLEMDS "lctl set_param -n \
rm -rf $DIR/$tdir
wait_delete_completed
do_facet $SINGLEMDS "lctl set_param -n \
remote_mds_nodsh && skip "remote MDS with nodsh"
local old_iused=$($LFS df -i | grep OST0000 | awk '{ print $3 }')
remote_mds_nodsh && skip "remote MDS with nodsh"
local old_iused=$($LFS df -i | grep OST0000 | awk '{ print $3 }')
+ local mdts=$(comma_list $(mdts_nodes))
mkdir -p $DIR/$tdir
$LFS setstripe -i 0 -c 1 $DIR/$tdir
mkdir -p $DIR/$tdir
$LFS setstripe -i 0 -c 1 $DIR/$tdir
# statfs data is not real time, let's just calculate it
old_iused=$((old_iused + 1000))
# statfs data is not real time, let's just calculate it
old_iused=$((old_iused + 1000))
- local count=$(do_facet $SINGLEMDS "lctl get_param -n \
+ local count=$(do_facet $SINGLEMDS "$LCTL get_param -n \
osp.*OST0000*MDT0000.create_count")
osp.*OST0000*MDT0000.create_count")
- local max_count=$(do_facet $SINGLEMDS "lctl get_param -n \
+ local max_count=$(do_facet $SINGLEMDS "$LCTL get_param -n \
osp.*OST0000*MDT0000.max_create_count")
osp.*OST0000*MDT0000.max_create_count")
- for idx in $(seq $MDSCOUNT); do
- do_facet mds$idx "lctl set_param -n \
- osp.*OST0000*MDT000?.max_create_count=0"
- done
+ do_nodes $mdts "$LCTL set_param -n osp.*OST0000*.max_create_count=0"
$LFS setstripe -i 0 $DIR/$tdir/$tfile || error "setstripe failed"
local index=$($LFS getstripe -i $DIR/$tdir/$tfile)
$LFS setstripe -i 0 $DIR/$tdir/$tfile || error "setstripe failed"
local index=$($LFS getstripe -i $DIR/$tdir/$tfile)
unlinkmany $DIR/$tdir/$tfile. 1000
unlinkmany $DIR/$tdir/$tfile. 1000
- for idx in $(seq $MDSCOUNT); do
- do_facet mds$idx "lctl set_param -n \
- osp.*OST0000*MDT000?.max_create_count=$max_count"
- do_facet mds$idx "lctl set_param -n \
- osp.*OST0000*MDT000?.create_count=$count"
- done
+ do_nodes $mdts "$LCTL set_param -n \
+ osp.*OST0000*.max_create_count=$max_count"
+ [ $(lustre_version_code $facet) -lt $(version_code 2.11.56) ] &&
+ do_nodes $mdts "$LCTL set_param -n \
+ osp.*OST0000*.create_count=$count"
+ do_nodes $mdts "$LCTL get_param osp.*OST0000*.create_count" |
+ grep "=0" && error "create_count is zero"
local new_iused
for i in $(seq 120); do
local new_iused
for i in $(seq 120); do