mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-01 16:14:13 +08:00
smb3: add mount parm nosparse
To reduce risk of applications breaking that mount to servers with only partial sparse file support, add optional mount parm "nosparse" which disables setting files sparse (and thus will return EOPNOTSUPP on certain fallocate operations). Acked-by: Ronnie Sahlberg <lsahlber@redhat.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
9ccfc23a72
commit
52832252dd
@ -116,7 +116,8 @@ static void cifs_debug_tcon(struct seq_file *m, struct cifs_tcon *tcon)
|
||||
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');
|
||||
|
@ -582,6 +582,8 @@ cifs_show_options(struct seq_file *s, struct dentry *root)
|
||||
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)
|
||||
|
@ -2509,6 +2509,7 @@ cifs_get_tcon(struct cifs_ses *ses, struct smb3_fs_context *ctx)
|
||||
*/
|
||||
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
|
||||
|
@ -119,6 +119,7 @@ const struct fs_parameter_spec smb3_fs_parameters[] = {
|
||||
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),
|
||||
@ -943,6 +944,9 @@ static int smb3_fs_context_parse_param(struct fs_context *fc,
|
||||
case Opt_nolease:
|
||||
ctx->no_lease = 1;
|
||||
break;
|
||||
case Opt_nosparse:
|
||||
ctx->no_sparse = 1;
|
||||
break;
|
||||
case Opt_nodelete:
|
||||
ctx->nodelete = 1;
|
||||
break;
|
||||
|
@ -62,6 +62,7 @@ enum cifs_param {
|
||||
Opt_noblocksend,
|
||||
Opt_noautotune,
|
||||
Opt_nolease,
|
||||
Opt_nosparse,
|
||||
Opt_hard,
|
||||
Opt_soft,
|
||||
Opt_perm,
|
||||
@ -222,6 +223,7 @@ struct smb3_fs_context {
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user