+
+# find the smallest and not in use file descriptor
+free_fd()
+{
+ local max_fd=$(ulimit -n)
+ local fd=3
+ while [[ $fd -le $max_fd && -e /proc/self/fd/$fd ]]; do
+ ((++fd))
+ done
+ [ $fd -lt $max_fd ] || error "finding free file descriptor failed"
+ echo $fd
+}
+
+check_mount_and_prep()
+{
+ is_mounted $MOUNT || setupall
+
+ rm -rf $DIR/[df][0-9]* || error "Fail to cleanup the env!"
+ mkdir $DIR/$tdir || error "Fail to mkdir $DIR/$tdir."
+}
+
+# calcule how many ost-objects to be created.
+precreated_ost_obj_count()
+{
+ local mdt_idx=$1
+ local ost_idx=$2
+ local mdt_name="MDT$(printf '%04x' $mdt_idx)"
+ local ost_name="OST$(printf '%04x' $ost_idx)"
+ local proc_path="${FSNAME}-${ost_name}-osc-${mdt_name}"
+ local last_id=$(do_facet mds${mdt_idx} lctl get_param -n \
+ osp.$proc_path.prealloc_last_id)
+ local next_id=$(do_facet mds${mdt_idx} lctl get_param -n \
+ osp.$proc_path.prealloc_next_id)
+
+ echo $((last_id - next_id + 1))
+}