tcon->ses->server->ops->dump_share_caps(m, tcon);
        if (tcon->use_witness)
                seq_puts(m, " Witness");
-
+       if (tcon->broken_sparse_sup)
+               seq_puts(m, " nosparse");
        if (tcon->need_reconnect)
                seq_puts(m, "\tDISCONNECTED ");
        seq_putc(m, '\n');
 
                seq_puts(s, ",nocase");
        if (tcon->nodelete)
                seq_puts(s, ",nodelete");
+       if (cifs_sb->ctx->no_sparse)
+               seq_puts(s, ",nosparse");
        if (tcon->local_lease)
                seq_puts(s, ",locallease");
        if (tcon->retry)
 
         */
        tcon->retry = ctx->retry;
        tcon->nocase = ctx->nocase;
+       tcon->broken_sparse_sup = ctx->no_sparse;
        if (ses->server->capabilities & SMB2_GLOBAL_CAP_DIRECTORY_LEASING)
                tcon->nohandlecache = ctx->nohandlecache;
        else
 
        fsparam_flag_no("persistenthandles", Opt_persistent),
        fsparam_flag_no("resilienthandles", Opt_resilient),
        fsparam_flag_no("tcpnodelay", Opt_tcp_nodelay),
+       fsparam_flag("nosparse", Opt_nosparse),
        fsparam_flag("domainauto", Opt_domainauto),
        fsparam_flag("rdma", Opt_rdma),
        fsparam_flag("modesid", Opt_modesid),
        case Opt_nolease:
                ctx->no_lease = 1;
                break;
+       case Opt_nosparse:
+               ctx->no_sparse = 1;
+               break;
        case Opt_nodelete:
                ctx->nodelete = 1;
                break;
 
        Opt_noblocksend,
        Opt_noautotune,
        Opt_nolease,
+       Opt_nosparse,
        Opt_hard,
        Opt_soft,
        Opt_perm,
        bool noautotune:1;
        bool nostrictsync:1; /* do not force expensive SMBflush on every sync */
        bool no_lease:1;     /* disable requesting leases */
+       bool no_sparse:1;    /* do not attempt to set files sparse */
        bool fsc:1;     /* enable fscache */
        bool mfsymlinks:1; /* use Minshall+French Symlinks */
        bool multiuser:1;