More recvfile optimizations

Stefan (metze) Metzmacher metze at samba.org
Thu Apr 10 15:58:09 MDT 2014


Am 10.04.2014 23:24, schrieb Jeremy Allison:
> On Thu, Apr 10, 2014 at 11:05:14PM +0200, Stefan (metze) Metzmacher wrote:
>>
>> I don't have a fix.
>>
>> But we would need such check in is_smb2_recvfile_write(), correct?
> 
> Well, there are two ways of doing it.
> 
> First one is to add the :
> 
> smbd_smb2_request_check_session()
> smbd_smb2_request_check_tcon()
> 
> calls into is_smb2_recvfile_write(), which is
> the same way the SMB1 code does it.

I'd just do a smb2srv_open_lookup() to get fsp
(similar to file_fsp_get()), and use fsp->conn.

In future I'd let is_valid_writeX_buffer()
use smb1srv_open_lookup() instead of smb1srv_tcon_lookup().

Then we can add a bool support_recvfile to fsp.
We should not add this for directories or fake files.
SMB_VFS_OPEN should decide if recvfile is supported.

And maybe also add bool support_sendfile.

This way we would integrate something like this:

http://opensource.apple.com/source/samba/samba-235.7/patches/add-sendfile-capability-bit-to-fsp

> Oh yeah, we also need to add:
> 
>         if (state->hdr.nbt[0] != 0x00) {
>                 /* Not a standard NBT packet. Ignore. */
>                 return false;
>         }
> 
> at the top of is_smb2_recvfile_write() to make
> sure we correctly ignore non-NBT packets (not
> that we should get many of those, but it's
> better to be correct...).

Yep.

>> So we decided to drop support for compilers without support dynamic arrays?
> 
> Yep. Some new Volker code already uses it :-).

Ok.

metze


More information about the samba-technical mailing list