What is maximum SMB2 IOCTL(FSCTL_GET_SHADOW_COPY) response size.

Hemanth Thummala hemanth.thummala at gmail.com
Sun Jan 18 23:13:02 MST 2015


Hi Richard,

Here is the exchange.

1) Initially client asked for number of copies. Buffer size if 16 here.

SMB2 (Server Message Block Protocol version 2)
    SMB2 Header
    Ioctl Request (0x0b)
        StructureSize: 0x0039
        Function: FSCTL_GET_SHADOW_COPY_DATA (0x00144064)
        GUID handle File:
        Max Ioctl In Size: 0
        Max Ioctl Out Size: 16
        Flags: 0x00000001
            .... .... .... .... .... .... .... ...1 = Is FSCTL: True
        In Data: NO DATA
            Offset: 0x00000078
            Length: 0
        Out Data: NO DATA
            Offset: 0x00000078
            Length: 0

2) Server responded with 1730 volumes and informed client it requires ~86K
buffer to send the response.

SMB2 (Server Message Block Protocol version 2)
    SMB2 Header
    Ioctl Response (0x0b)
        StructureSize: 0x0031
        unknown: 0000
        Function: FSCTL_GET_SHADOW_COPY_DATA (0x00144064)
        GUID handle File:
        In Data: NO DATA
            Offset: 0x00000070
            Length: 0
        Out Data
            Offset: 0x00000070
            Length: 16
            Num Volumes: *1730*
            Num Labels: 0
            Count: *86506*
            Label:
            Label:
            Label: [ Null ]

3) Client requested back with 86K buffer to get the entire list.

SMB2 (Server Message Block Protocol version 2)
    SMB2 Header
    Ioctl Request (0x0b)
        StructureSize: 0x0039
        Function: FSCTL_GET_SHADOW_COPY_DATA (0x00144064)
        GUID handle File:
        Max Ioctl In Size: 0
        Max Ioctl Out Size: *86518*
        Flags: 0x00000001
            .... .... .... .... .... .... .... ...1 = Is FSCTL: True
        In Data: NO DATA
            Offset: 0x00000078
            Length: 0
        Out Data: NO DATA
            Offset: 0x00000078
            Length: 0

..
There were quite a few TCP segments carrying the snapshot details to client.
Client acknowledged few.
...
After a while client disconnected the session.
SMB2     138    [TCP ZeroWindow] [TCP ACKed unseen segment] Tree Disconnect
Request

Thanks,
Hemanth.

On Sun, Jan 18, 2015 at 10:01 PM, Richard Sharpe <
realrichardsharpe at gmail.com> wrote:

> On Sun, Jan 18, 2015 at 9:55 PM, Hemanth Thummala
> <hemanth.thummala at gmail.com> wrote:
> > Hi,
> >
> > We are using samba 3.6.12+ stack. We are implemented windows previous
> > version(shadow copies) support with new VFS module.
> >
> > On one of our nodes, there are huge number(~2K) of snapshots and we
> trying
> > to send them(as list) as part of IOCTL response for
> FSCTL_GET_SHADOW_COPY.
> > Response size is coming around 90K. Client is facing an issue in
> receiving
> > the huge response packet. After receiving around 65K data( calculated
> > acknowledged TCP segments), client returning TCP zero size recv window
> > error followed by connection reset. Client behavior is same irrespective
> of
> > version. I have tested on win 7, windows 8 and win2K12 server.
> >
> > Would like to know if there is any limit on this IOCTL response. Client
> > negotiated 64K as max transaction size but this is the request buffer
> size
> > that server can accept. Did not find any documentation about SMB2 client
> > limits.
> >
> > We couldn't verify this against windows as windows supports only 512 VSS
> > copies in back end. So it will never need to send more than 512 snapshots
> > to client.
>
> What does the MaxOutputResponse field in the request show? That is a
> 32-bit field.
>
> --
> Regards,
> Richard Sharpe
> (何以解憂?唯有杜康。--曹操)
>


More information about the samba-technical mailing list