diff options
author | Jeremy Allison <jra@samba.org> | 2017-03-22 19:22:31 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2017-03-25 00:49:22 +0100 |
commit | ed483d8e570700a303e11bc03d6250cd0ae4aaed (patch) | |
tree | c29098095c6f38778667e983f45521c347c09810 | |
parent | a74fef0b907f03b8a52bddbaf1638cf794176e4b (diff) | |
download | samba-ed483d8e570700a303e11bc03d6250cd0ae4aaed.tar.gz |
s3: smbd: Change "strict sync" paramter from "no" to "yes" for 4.7.0.
Document change and modify in loadparm.c.
Safer default for new installs and vendors.
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Christof Schmitt <cs@samba.org>
-rw-r--r-- | docs-xml/smbdotconf/tuning/strictsync.xml | 48 | ||||
-rw-r--r-- | lib/param/loadparm.c | 2 | ||||
-rw-r--r-- | source3/param/loadparm.c | 2 |
3 files changed, 33 insertions, 19 deletions
diff --git a/docs-xml/smbdotconf/tuning/strictsync.xml b/docs-xml/smbdotconf/tuning/strictsync.xml index 5cfd38831bb..f2e378877b4 100644 --- a/docs-xml/smbdotconf/tuning/strictsync.xml +++ b/docs-xml/smbdotconf/tuning/strictsync.xml @@ -3,26 +3,38 @@ type="boolean" xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> <description> - <para>Many Windows applications (including the Windows 98 explorer - shell) seem to confuse flushing buffer contents to disk with doing - a sync to disk. Under UNIX, a sync call forces the thread to be - suspended until the kernel has ensured that all outstanding data in - kernel disk buffers has been safely stored onto stable storage. - This is very slow and should only be done rarely. Setting this - parameter to <constant>no</constant> (the default) means that - <citerefentry><refentrytitle>smbd</refentrytitle> - <manvolnum>8</manvolnum></citerefentry> ignores the Windows - applications requests for a sync call. There is only a possibility - of losing data if the operating system itself that Samba is running - on crashes, so there is little danger in this default setting. In - addition, this fixes many performance problems that people have - reported with the new Windows98 explorer shell file copies.</para> + <para>This parameter controls whether Samba honors a request + from an SMB client to ensure any outstanding operating system + buffer contents held in memory are safely written onto stable + storage on disk. If set to <constant>yes</constant>, which is + the default, then Windows applications can force the smbd server + to synchronize unwritten data onto the disk. If set to + <constant>no</constant> then smbd will ignore client + requests to synchronize unwritten data onto stable storage on + disk.</para> + + <para>In Samba 4.7.0, the default for this parameter changed from + <constant>no</constant> to <constant>yes</constant> to better + match the expectations of SMB2/3 clients and improve application + safety when running against smbd.</para> + <para>The flush request from SMB2/3 clients is handled - asynchronously, so for these clients setting the parameter - to <constant>yes</constant> does not block the processing of other - requests in the smbd process.</para> + asynchronously inside smbd, so leaving the parameter as the default + value of <constant>yes</constant> does not block the processing of + other requests to the smbd process.</para> + + <para>Legacy Windows applications (such as the Windows 98 explorer + shell) seemed to confuse writing buffer contents to the operating + system with synchronously writing outstanding data onto stable storage + on disk. Changing this parameter to <constant>no</constant> means that + <citerefentry><refentrytitle>smbd</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> will ignore the Windows + applications request to synchronize unwritten data onto disk. Only + consider changing this if smbd is serving obsolete SMB1 Windows clients + prior to Windows XP (Windows 98 and below). There should be no need to + change this setting for normal operations.</para> </description> <related>sync always</related> -<value type="default">no</value> +<value type="default">yes</value> </samba:parameter> diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c index 335c54a3abe..cedf8facb8d 100644 --- a/lib/param/loadparm.c +++ b/lib/param/loadparm.c @@ -2832,6 +2832,8 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx) lpcfg_do_global_parameter(lp_ctx, "strict locking", "Auto"); + lpcfg_do_global_parameter(lp_ctx, "strict sync", "yes"); + lpcfg_do_global_parameter(lp_ctx, "map readonly", "yes"); lpcfg_do_global_parameter(lp_ctx, "allow trusted domains", "yes"); diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index c65e613feea..57220a64282 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -207,7 +207,7 @@ static struct loadparm_service sDefault = .sync_always = false, .strict_allocate = false, .strict_rename = false, - .strict_sync = false, + .strict_sync = true, .mangling_char = '~', .copymap = NULL, .delete_readonly = false, |