selftests/seccomp: More closely track fds being assigned
[linux-2.6-microblaze.git] / fs / exfat / dir.c
index 7efb1c6..c452364 100644 (file)
@@ -147,7 +147,7 @@ static int exfat_readdir(struct inode *inode, loff_t *cpos, struct exfat_dir_ent
                                        0);
 
                        *uni_name.name = 0x0;
-                       exfat_get_uniname_from_ext_entry(sb, &dir, dentry,
+                       exfat_get_uniname_from_ext_entry(sb, &clu, i,
                                uni_name.name);
                        exfat_utf16_to_nls(sb, &uni_name,
                                dir_entry->namebuf.lfn,
@@ -911,14 +911,19 @@ enum {
 };
 
 /*
- * return values:
- *   >= 0      : return dir entiry position with the name in dir
- *   -ENOENT   : entry with the name does not exist
- *   -EIO      : I/O error
+ * @ei:         inode info of parent directory
+ * @p_dir:      directory structure of parent directory
+ * @num_entries:entry size of p_uniname
+ * @hint_opt:   If p_uniname is found, filled with optimized dir/entry
+ *              for traversing cluster chain.
+ * @return:
+ *   >= 0:      file directory entry position where the name exists
+ *   -ENOENT:   entry with the name does not exist
+ *   -EIO:      I/O error
  */
 int exfat_find_dir_entry(struct super_block *sb, struct exfat_inode_info *ei,
                struct exfat_chain *p_dir, struct exfat_uni_name *p_uniname,
-               int num_entries, unsigned int type)
+               int num_entries, unsigned int type, struct exfat_hint *hint_opt)
 {
        int i, rewind = 0, dentry = 0, end_eidx = 0, num_ext = 0, len;
        int order, step, name_len = 0;
@@ -995,6 +1000,8 @@ rewind:
 
                        if (entry_type == TYPE_FILE || entry_type == TYPE_DIR) {
                                step = DIRENT_STEP_FILE;
+                               hint_opt->clu = clu.dir;
+                               hint_opt->eidx = i;
                                if (type == TYPE_ALL || type == entry_type) {
                                        num_ext = ep->dentry.file.num_ext;
                                        step = DIRENT_STEP_STRM;