__set_bit(NFS_CS_DISCRTRY, &clp->cl_flags);
        __set_bit(NFS_CS_NO_RETRANS_TIMEOUT, &clp->cl_flags);
 
+       if (test_bit(NFS_CS_DS, &cl_init->init_flags))
+               __set_bit(NFS_CS_DS, &clp->cl_flags);
        /*
         * Set up the connection to the server before we add add to the
         * global list.
        if (mds_srv->flags & NFS_MOUNT_NORESVPORT)
                __set_bit(NFS_CS_NORESVPORT, &cl_init.init_flags);
 
+       __set_bit(NFS_CS_DS, &cl_init.init_flags);
        /*
         * Set an authflavor equual to the MDS value. Use the MDS nfs_client
         * cl_ipaddr so as to use the same EXCHANGE_ID co_ownerid as the MDS
 
 #ifdef CONFIG_NFS_V4_1_MIGRATION
        calldata->args.flags |= EXCHGID4_FLAG_SUPP_MOVED_MIGR;
 #endif
+       if (test_bit(NFS_CS_DS, &clp->cl_flags))
+               calldata->args.flags |= EXCHGID4_FLAG_USE_PNFS_DS;
        msg.rpc_argp = &calldata->args;
        msg.rpc_resp = &calldata->res;
        task_setup_data.callback_data = calldata;
        /* Save the EXCHANGE_ID verifier session trunk tests */
        memcpy(clp->cl_confirm.data, argp->verifier.data,
               sizeof(clp->cl_confirm.data));
+       if (resp->flags & EXCHGID4_FLAG_USE_PNFS_DS)
+               set_bit(NFS_CS_DS, &clp->cl_flags);
 out:
        trace_nfs4_exchange_id(clp, status);
        rpc_put_task(task);