- if (dt_try_as_dir(env, root) == 0)
- GOTO(out_los, rc = -ENOTDIR);
+ snprintf(dti->dti_buf, sizeof(dti->dti_buf), "seq-%Lx-lastid",
+ fid_seq(first_fid));
+ rc = dt_lookup_dir(env, root, dti->dti_buf, &dti->dti_fid);
+ if (rc != 0 && rc != -ENOENT)
+ GOTO(out_los, rc);
+
+ /* initialize data allowing to generate new fids,
+ * literally we need a sequence */
+ if (rc == 0)
+ o = ls_locate(env, ls, &dti->dti_fid);
+ else
+ o = ls_locate(env, ls, first_fid);
+ if (IS_ERR(o))
+ GOTO(out_los, rc = PTR_ERR(o));