/* This function decodes @fid as long as it has one of the well-known Linux filehandle types and calls @get_inode on it to retrieve the inode for the  */
struct dentry* generic_fh_to_parent(struct super_block *sb, struct fid *fid, int fh_len, int fh_type, struct inode *(*get_inode)(struct super_block *sb, u64 ino, u32 gen))
/* This function decodes @fid as long as it has one of the well-known Linux filehandle types and calls @get_inode on it to retrieve the inode for the  */
struct dentry* generic_fh_to_parent(struct super_block *sb, struct fid *fid, int fh_len, int fh_type, struct inode *(*get_inode)(struct super_block *sb, u64 ino, u32 gen))
{
	struct inode *inode = NULL;
	if (fh_len <= 2)
		return NULL;
	switch (fh_type) {
	case FILEID_INO32_GEN_PARENT:
		inode = get_inode(sb, fid->i32.parent_ino,
				  (fh_len > 3 ? fid->i32.parent_gen : 0));
		break;
	}
	return d_obtain_alias(inode);
}