Re: [PATCH 01/19] cifs: Add smb2_send_recv

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2017-11-20 13:50 GMT-08:00 Pavel Shilovsky <piastryyy@xxxxxxxxx>:
> 2017-11-19 16:24 GMT-08:00 Ronnie Sahlberg <lsahlber@xxxxxxxxxx>:
>> This function is similar to SendReceive2 except it does not expect
>> a 4 byte rfc1002 length header in the first io vector.
>>
>> Signed-off-by: Ronnie Sahlberg <lsahlber@xxxxxxxxxx>
>> ---
>>  fs/cifs/cifsproto.h |  4 ++++
>>  fs/cifs/transport.c | 38 ++++++++++++++++++++++++++++++++++++++
>>  2 files changed, 42 insertions(+)
>>
>> diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
>> index 4143c9dec463..6d86cd120349 100644
>> --- a/fs/cifs/cifsproto.h
>> +++ b/fs/cifs/cifsproto.h
>> @@ -106,6 +106,10 @@ extern int SendReceive2(const unsigned int /* xid */ , struct cifs_ses *,
>>                         struct kvec *, int /* nvec to send */,
>>                         int * /* type of buf returned */, const int flags,
>>                         struct kvec * /* resp vec */);
>> +extern int smb2_send_recv(const unsigned int /* xid */ , struct cifs_ses *,
>> +                         struct kvec *, int /* nvec to send */,
>> +                         int * /* type of buf returned */, const int flags,
>> +                         struct kvec * /* resp vec */);
>>  extern int SendReceiveBlockingLock(const unsigned int xid,
>>                         struct cifs_tcon *ptcon,
>>                         struct smb_hdr *in_buf ,
>> diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
>> index 7efbab013957..e678307bb7a0 100644
>> --- a/fs/cifs/transport.c
>> +++ b/fs/cifs/transport.c
>> @@ -827,6 +827,44 @@ SendReceive2(const unsigned int xid, struct cifs_ses *ses,
>>         return rc;
>>  }
>>
>> +/* Like SendReceive2 but iov[0] does not contain an rfc1002 header */
>> +int
>> +smb2_send_recv(const unsigned int xid, struct cifs_ses *ses,
>> +              struct kvec *iov, int n_vec, int *resp_buf_type /* ret */,
>> +              const int flags, struct kvec *resp_iov)
>> +{
>> +       struct smb_rqst rqst;
>> +       struct kvec *new_iov;
>> +       int rc;
>> +       int i;
>> +       __u32 count;
>> +       __be32 rfc1002_marker;
>> +
>> +       new_iov = kmalloc(sizeof(struct kvec) * (n_vec + 1), GFP_KERNEL);
>> +       if (!new_iov)
>> +               return -ENOMEM;
>
> Probably it is out of the scope of this patchset but can we do a
> simple hack here: allocate a fixed size array on stack (suppose iov[8]
> which is more that enough for most cases) and use dynamic allocation
> only if n_vec + 1 is greater than this fixed value? I can use the same

         ^^^
I == We. Sorry - typo.

> approach in SendReceive2() as well.
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux