Merge tag 'ktest-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[linux-2.6-microblaze.git] / fs / cifs / cifs_dfs_ref.c
index cc3ada1..e4c6ae4 100644 (file)
@@ -23,6 +23,7 @@
 #include "cifs_debug.h"
 #include "cifs_unicode.h"
 #include "dfs_cache.h"
+#include "fs_context.h"
 
 static LIST_HEAD(cifs_dfs_automount_list);
 
@@ -124,7 +125,6 @@ cifs_build_devname(char *nodename, const char *prepath)
  * @sb_mountdata:      parent/root DFS mount options (template)
  * @fullpath:          full path in UNC format
  * @ref:               optional server's referral
- * @devname:           optional pointer for saving device name
  *
  * creates mount options for submount based on template options sb_mountdata
  * and replacing unc,ip,prefixpath options with ones we've got form ref_unc.
@@ -134,8 +134,7 @@ cifs_build_devname(char *nodename, const char *prepath)
  */
 char *cifs_compose_mount_options(const char *sb_mountdata,
                                   const char *fullpath,
-                                  const struct dfs_info3_param *ref,
-                                  char **devname)
+                                  const struct dfs_info3_param *ref)
 {
        int rc;
        char *name;
@@ -232,10 +231,7 @@ char *cifs_compose_mount_options(const char *sb_mountdata,
        strcat(mountdata, "ip=");
        strcat(mountdata, srvIP);
 
-       if (devname)
-               *devname = name;
-       else
-               kfree(name);
+       kfree(name);
 
        /*cifs_dbg(FYI, "%s: parent mountdata: %s\n", __func__, sb_mountdata);*/
        /*cifs_dbg(FYI, "%s: submount mountdata: %s\n", __func__, mountdata );*/
@@ -258,6 +254,7 @@ compose_mount_options_err:
  * to perform failover in case we failed to connect to the first target in the
  * referral.
  *
+ * @mntpt:             directory entry for the path we are trying to automount
  * @cifs_sb:           parent/root superblock
  * @fullpath:          full path in UNC format
  */
@@ -275,9 +272,13 @@ static struct vfsmount *cifs_dfs_do_mount(struct dentry *mntpt,
 
        convert_delimiter(devname, '/');
 
+       /* TODO: change to call fs_context_for_mount(), fill in context directly, call fc_mount */
+
+       /* See afs_mntpt_do_automount in fs/afs/mntpt.c for an example */
+
        /* strip first '\' from fullpath */
-       mountdata = cifs_compose_mount_options(cifs_sb->mountdata,
-                                              fullpath + 1, NULL, NULL);
+       mountdata = cifs_compose_mount_options(cifs_sb->ctx->mount_options,
+                                              fullpath + 1, NULL);
        if (IS_ERR(mountdata)) {
                kfree(devname);
                return (struct vfsmount *)mountdata;