Is Samba sync or async for writes?

Being sync or async for data writing of a file system or a network file system affects the data integrity. Is Samba sync or async for writes?

In summary, Samba writes are async by default. But the behavior is configurable.

Here is a great summary by Eric Roseme.

Samba defaults to asynchronous writes. smbd writes to memory buffer,
then returns to processing. Buffer is flushed to disk later. This is
the most efficient behavior.

Windows CreateFile API has the FILE_FLAG_WRITE_THROUGH flag, which
requests synchronous writes. smbd writes to memory buffer, blocks
until buffer contents are written to disk, which results in poor
performance, but better data integrity.

When “strict sync = yes” (default = no) Samba honors the
FILE_FLAG_WRITE_THROUGH flag, and results in synchronous writes when
called by the CreateFile API.

When “sync always = yes” (default = no) Samba executes all writes
synchronously. This requires that “strict sync = yes”.

StrictSync  SyncAlways  ff_write_through   Sync-Writes
     no          no             no                no
     yes         no             no                no
     yes         no             yes               Yes (slow)
     no          yes            yes               no
     yes         yes            yes/no            yes (very slow)

Eric Ma

Eric is a systems guy. Eric is interested in building high-performance and scalable distributed systems and related technologies. The views or opinions expressed here are solely Eric's own and do not necessarily represent those of any third parties.

Leave a Reply

Your email address will not be published. Required fields are marked *