RE: [PATCH 1/2] staging: exfat: clean up d_entry rebuilding.

From: Kohada.Tetsuhiro@xxxxxxxxxxxxxxxxxxxxxxxxxxx
Date: Mon Mar 02 2020 - 22:09:15 EST


Thanks for your comment.

> Are you sure this is OK to do? exfat_get_entry_type() does a lot of
> mapping between values, using a file_dentry_t->type, while
> fid->type is a file_id_t->type.

The fid argument of exfat_rename_file()/move_file()from old_dentry->fid of exfat_rename().
* exfat_rename_file() <- ffsMoveFile() <- exfat_rename()
* move_file() <- ffsMoveFile() <- exfat_rename()

The value that vfs sets to the old_dentry of exfat_rename() is the dentry value returned by exfat_lookup(), exfat_create(), and create_dir().
In each function, the value of dentry->fid is initialized to fid->type at create_file(), ffsLookupFile(), and create_dir().

* create_file() <- ffsCreateFile() <-exfat_create()
* ffsLookupFile() <- exfat_find() <-exfat_lookup()
* exfat_mkdir() <- ffsCreateDir() <-create_dir()

> and at first read it's not obvious to
> fid->me whether type is guaranteed to have the correct value already.

A valid value is set in fid->type for all paths.
What do you think?

--
Kohada Tetsuhiro <Kohada.Tetsuhiro@xxxxxxxxxxxxxxxxxxxxxxxxxxx>