[Samba] Samba and BTRFS server-side copy
Jeremy Allison
jra at samba.org
Fri Oct 28 00:30:09 UTC 2016
On Thu, Oct 27, 2016 at 05:22:14PM -0700, Jeremy Allison via samba wrote:
>
> Looking around inside that source code I also see:
>
> do_read (GVfsBackend *backend,
> GVfsJobRead *job,
> GVfsBackendHandle handle,
> char *buffer,
> gsize bytes_requested)
> {
> GVfsBackendSmb *op_backend = G_VFS_BACKEND_SMB (backend);
> ssize_t res;
> smbc_read_fn smbc_read;
>
> /* libsmbclient limits blocksize to (64*1024)-2 for Windows servers,
> * let's do the same here to achieve reasonable performance. (#588391)
> *
> * TODO: port to pull mechanism (#592468)
> */
> if (bytes_requested > 65534)
> bytes_requested = 65534;
>
> smbc_read = smbc_getFunctionRead (op_backend->smb_context);
> res = smbc_read (op_backend->smb_context, (SMBCFILE *)handle, buffer, bytes_requested);
>
> which is also completely broken and wrong. The read call
> can take any arbitrary size and the both the libsmbclient
> SMB1 and SMB2 engines will break this down into as many
> simultaneous on the wire calls as needed to pipeline
> the reads / writes.
>
> Restricting this to 65534 is *insane* and slow. That
> whole chunk of code restricting the size needs to be
> removed.
Oh it's my fault from 2009:
https://bugzilla.gnome.org/show_bug.cgi?id=588391#c10
:-).
I'll log another bug to get the whole thing removed
now we pipeline correctly.
More information about the samba
mailing list