- /* (Extraction only) Actual name to extract this dentry as, along with
- * its length in tchars excluding the NULL terminator. This usually
- * will be the same as file_name, with the character encoding converted
- * if needed. But if file_name contains characters not accepted on the
- * current platform, then this may be set slightly differently from
- * file_name. This will be either NULL or a malloc()ed buffer that may
- * alias file_name. */
- tchar *extraction_name;
- size_t extraction_name_nchars;
+ /* (Extraction only) Actual name to extract this dentry as. This may be
+ * either in 'tchars' or in 'utf16lechars', depending on what encoding
+ * the extraction backend needs. This may alias 'file_name'. If it
+ * doesn't, it is an allocated buffer which must be freed. */
+ void *d_extraction_name;
+
+ /* (Extraction only) Number of characters in d_extraction_name. */
+ size_t d_extraction_name_nchars;
+
+ /* (Extraction only) Linked list node that connects all dentries being
+ * extracted as part of the current extraction operation. */
+ struct list_head d_extraction_list_node;
+
+ /* (Extraction only) Linked list node that connects all dentries being
+ * extracted as aliases of the same inode as part of the current
+ * extraction operation. */
+ struct list_head d_extraction_alias_node;