struct ll_inode_info *rlli = ll_i2info(root);
struct ll_inode_info *lli = ll_i2info(dir);
struct lmv_stripe_md *lsm;
+ unsigned short depth;
op_data->op_dir_depth = lli->lli_inherit_depth ?: lli->lli_dir_depth;
+ depth = lli->lli_dir_depth;
/* parent directory is striped */
if (unlikely(lli->lli_lsm_md))
if (lsm->lsm_md_master_mdt_index != LMV_OFFSET_DEFAULT)
goto unlock;
+ /**
+ * Check if the fs default is to be applied.
+ * depth == 0 means 'not inited' for not root dir.
+ */
if (lsm->lsm_md_max_inherit != LMV_INHERIT_NONE &&
(lsm->lsm_md_max_inherit == LMV_INHERIT_UNLIMITED ||
- lsm->lsm_md_max_inherit >= lli->lli_dir_depth)) {
+ (depth && lsm->lsm_md_max_inherit > depth))) {
op_data->op_flags |= MF_QOS_MKDIR;
if (lsm->lsm_md_max_inherit_rr != LMV_INHERIT_RR_NONE &&
(lsm->lsm_md_max_inherit_rr == LMV_INHERIT_RR_UNLIMITED ||
- lsm->lsm_md_max_inherit_rr >= lli->lli_dir_depth))
+ (depth && lsm->lsm_md_max_inherit_rr > depth)))
op_data->op_flags |= MF_RR_MKDIR;
CDEBUG(D_INODE, DFID" requests qos mkdir %#x\n",
PFID(&lli->lli_fid), op_data->op_flags);