- if (unlikely(fid_is_acct(fid)))
- return osd_acct_obj_lookup(info, osd, fid, id);
+ if (unlikely(fid_seq(fid) == FID_SEQ_LOCAL_FILE)) {
+ int rc;
+ if (fid_is_fs_root(fid)) {
+ osd_id_gen(id, osd_sb(osd)->s_root->d_inode->i_ino,
+ osd_sb(osd)->s_root->d_inode->i_generation);
+ return 0;
+ }
+ if (unlikely(fid_is_acct(fid)))
+ return osd_acct_obj_lookup(info, osd, fid, id);
+
+ /* For other special FIDs, try OI first, then do spec lookup */
+ rc = __osd_oi_lookup(info, osd, fid, id);
+ if (rc == -ENOENT)
+ return osd_obj_spec_lookup(info, osd, fid, id);
+ return rc;
+ }