+static int osd_ios_uld_fill(void *buf, const char *name, int namelen,
+ loff_t offset, __u64 ino, unsigned d_type)
+{
+ struct osd_ios_filldir_buf *fill_buf = buf;
+ struct dentry *child;
+ struct lu_fid tfid;
+ int rc = 0;
+ ENTRY;
+
+ /* skip any non-DFID format name */
+ if (name[0] != '[')
+ RETURN(0);
+
+ child = osd_ios_lookup_one_len(name, fill_buf->oifb_dentry, namelen);
+ if (IS_ERR(child))
+ RETURN(PTR_ERR(child));
+
+ /* skip the start '[' */
+ sscanf(&name[1], SFID, RFID(&tfid));
+ if (fid_is_sane(&tfid))
+ rc = osd_ios_scan_one(fill_buf->oifb_info, fill_buf->oifb_dev,
+ child->d_inode, &tfid, 0);
+ else
+ rc = -EIO;
+ dput(child);
+
+ RETURN(rc);
+}
+