const struct xfs_mount  *mp,
        struct va_format        *vaf)
 {
-       if (mp && mp->m_fsname) {
-               printk("%sXFS (%s): %pV\n", level, mp->m_fsname, vaf);
+       if (mp && mp->m_super) {
+               printk("%sXFS (%s): %pV\n", level, mp->m_super->s_id, vaf);
                return;
        }
        printk("%sXFS: %pV\n", level, vaf);
 
        /* enable fail_at_unmount as default */
        mp->m_fail_unmount = true;
 
-       error = xfs_sysfs_init(&mp->m_kobj, &xfs_mp_ktype, NULL, mp->m_fsname);
+       error = xfs_sysfs_init(&mp->m_kobj, &xfs_mp_ktype,
+                              NULL, mp->m_super->s_id);
        if (error)
                goto out;
 
        printk_once(KERN_WARNING
                "Filesystem \"%s\": reserve blocks depleted! "
                "Consider increasing reserve pool size.",
-               mp->m_fsname);
+               mp->m_super->s_id);
 fdblocks_enospc:
        spin_unlock(&mp->m_sb_lock);
        return -ENOSPC;
 
        substring_t             args[MAX_OPT_ARGS];
        int                     size = 0;
 
-       /*
-        * set up the mount name first so all the errors will refer to the
-        * correct device.
-        */
-       mp->m_fsname = kstrndup(sb->s_id, MAXNAMELEN, GFP_KERNEL);
-       if (!mp->m_fsname)
-               return -ENOMEM;
-
        /*
         * Copy binary VFS mount flags we are interested in.
         */
        struct xfs_mount        *mp)
 {
        mp->m_buf_workqueue = alloc_workqueue("xfs-buf/%s",
-                       WQ_MEM_RECLAIM|WQ_FREEZABLE, 1, mp->m_fsname);
+                       WQ_MEM_RECLAIM|WQ_FREEZABLE, 1, mp->m_super->s_id);
        if (!mp->m_buf_workqueue)
                goto out;
 
        mp->m_unwritten_workqueue = alloc_workqueue("xfs-conv/%s",
-                       WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname);
+                       WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_super->s_id);
        if (!mp->m_unwritten_workqueue)
                goto out_destroy_buf;
 
        mp->m_cil_workqueue = alloc_workqueue("xfs-cil/%s",
                        WQ_MEM_RECLAIM | WQ_FREEZABLE | WQ_UNBOUND,
-                       0, mp->m_fsname);
+                       0, mp->m_super->s_id);
        if (!mp->m_cil_workqueue)
                goto out_destroy_unwritten;
 
        mp->m_reclaim_workqueue = alloc_workqueue("xfs-reclaim/%s",
-                       WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname);
+                       WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_super->s_id);
        if (!mp->m_reclaim_workqueue)
                goto out_destroy_cil;
 
        mp->m_eofblocks_workqueue = alloc_workqueue("xfs-eofblocks/%s",
-                       WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname);
+                       WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_super->s_id);
        if (!mp->m_eofblocks_workqueue)
                goto out_destroy_reclaim;
 
        mp->m_sync_workqueue = alloc_workqueue("xfs-sync/%s", WQ_FREEZABLE, 0,
-                                              mp->m_fsname);
+                                              mp->m_super->s_id);
        if (!mp->m_sync_workqueue)
                goto out_destroy_eofb;
 
 }
 
 STATIC void
-xfs_free_fsname(
+xfs_free_names(
        struct xfs_mount        *mp)
 {
-       kfree(mp->m_fsname);
        kfree(mp->m_rtname);
        kfree(mp->m_logname);
 }
 
        tmp_mp->m_super = sb;
        error = xfs_parseargs(tmp_mp, options);
-       xfs_free_fsname(tmp_mp);
+       xfs_free_names(tmp_mp);
        kmem_free(tmp_mp);
 
        return error;
 
        error = xfs_parseargs(mp, (char *)data);
        if (error)
-               goto out_free_fsname;
+               goto out_free_names;
 
        sb_min_blocksize(sb, BBSIZE);
        sb->s_xattr = xfs_xattr_handlers;
 
        error = xfs_open_devices(mp);
        if (error)
-               goto out_free_fsname;
+               goto out_free_names;
 
        error = xfs_init_mount_workqueues(mp);
        if (error)
        xfs_destroy_mount_workqueues(mp);
  out_close_devices:
        xfs_close_devices(mp);
- out_free_fsname:
+ out_free_names:
        sb->s_fs_info = NULL;
-       xfs_free_fsname(mp);
+       xfs_free_names(mp);
        kfree(mp);
  out:
        return error;
        xfs_close_devices(mp);
 
        sb->s_fs_info = NULL;
-       xfs_free_fsname(mp);
+       xfs_free_names(mp);
        kfree(mp);
 }