grub-devel
[Top][All Lists]
Advanced

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

Re: pxe failing on grub 2.00 for files larger than 50KiB


From: Seth Goldberg
Subject: Re: pxe failing on grub 2.00 for files larger than 50KiB
Date: Tue, 25 Sep 2012 12:09:16 -0700 (PDT)
User-agent: Alpine 2.00 (GSO 1167 2008-08-23)

Hi,

Is it possible that debian mismerged some changes from 2.00? There is code in tftp.c that stalls TFTP responses if >= 50 packets are queued by the network driver. That packet count is increased by one each time grub_net_put_packet is called and decreased by one each time grub_net_receive_packet is called. Those packet count changes went into revision 4505 (Implement flow control for tftp).

 --S

Quoting Daniel Kahn Gillmor, who wrote the following on Tue, 25 Sep 2012:

hi grub folks--

i'm using grub 2.00-5 from debian experimental.

I made a pxeboot netdir with grub-mknetdir.

i'm trying to boot from it, and i get:

   error: timeout reading '/boot/grub/i386-pc/normal.mod'.

From the command prompt, i can successfully load smaller modules like
cat.mod and hello.mod, but trying to do "insmod normal" gives me the
timeout.

doing a packet capture on the tftp server, i see this:

$ tshark -n -r tftp.pcap
 1   0.000000 192.168.13.114 -> 192.168.13.1 TFTP 98 Read Request, File: 
/boot/grub/i386-pc/cat.mod, Transfer type: octet, blksize\000=1024\000, 
tsize\000=0\000
 2   0.002586 192.168.13.1 -> 192.168.13.114 TFTP 68 Option Acknowledgement, 
blksize\000=1024\000, tsize\000=2232\000
 3   0.002858 192.168.13.114 -> 192.168.13.1 TFTP 60 Acknowledgement, Block: 0
 4   0.003064 192.168.13.1 -> 192.168.13.114 TFTP 1070 Data Packet, Block: 1
 5   0.003741 192.168.13.114 -> 192.168.13.1 TFTP 60 Acknowledgement, Block: 1
 6   0.003846 192.168.13.1 -> 192.168.13.114 TFTP 1070 Data Packet, Block: 2
 7   0.004523 192.168.13.114 -> 192.168.13.1 TFTP 60 Acknowledgement, Block: 2
 8   0.004618 192.168.13.1 -> 192.168.13.114 TFTP 230 Data Packet, Block: 3 
(last)
 9   0.004901 192.168.13.114 -> 192.168.13.1 TFTP 60 Acknowledgement, Block: 3
10   5.189722 192.168.13.114 -> 192.168.13.1 TFTP 101 Read Request, File: 
/boot/grub/i386-pc/normal.mod, Transfer type: octet, blksize\000=1024\000, 
tsize\000=0\000
11   5.192318 192.168.13.1 -> 192.168.13.114 TFTP 70 Option Acknowledgement, 
blksize\000=1024\000, tsize\000=110364\000
12   5.192602 192.168.13.114 -> 192.168.13.1 TFTP 60 Acknowledgement, Block: 0
13   5.192779 192.168.13.1 -> 192.168.13.114 TFTP 1070 Data Packet, Block: 1
14   5.193423 192.168.13.114 -> 192.168.13.1 TFTP 60 Acknowledgement, Block: 1
15   5.193537 192.168.13.1 -> 192.168.13.114 TFTP 1070 Data Packet, Block: 2
16   5.194219 192.168.13.114 -> 192.168.13.1 TFTP 60 Acknowledgement, Block: 2
[...a bunch of TFTP data and acks snipped...]
109   5.229248 192.168.13.1 -> 192.168.13.114 TFTP 1070 Data Packet, Block: 49
110   5.229909 192.168.13.114 -> 192.168.13.1 TFTP 60 Acknowledgement, Block: 49
111   5.230033 192.168.13.1 -> 192.168.13.114 TFTP 1070 Data Packet, Block: 50
112   5.230699 192.168.13.114 -> 192.168.13.1 TFTP 60 Acknowledgement, Block: 50
113   5.230798 192.168.13.1 -> 192.168.13.114 TFTP 1070 Data Packet, Block: 51
114   6.234305 192.168.13.1 -> 192.168.13.114 TFTP 1070 Data Packet, Block: 51
115   8.238690 192.168.13.1 -> 192.168.13.114 TFTP 1070 Data Packet, Block: 51
116  12.243560 192.168.13.1 -> 192.168.13.114 TFTP 1070 Data Packet, Block: 51
117  14.821514 192.168.13.114 -> 192.168.13.1 TFTP 60 Error Code, Code: Not 
defined, Message: closed
$

any idea what's going on here?  i note that normal.mod is the largest
module on the system, at 110364 bytes.

also, when i try to "cat test.txt" and test.txt is a large file, it only
prints about 32767 bytes from the file before hanging, and
then producing:

error: timeout reading 'test.txt'

looking at the network, i see that it actually acknowledges the receipt
of 50 1024-byte chunks, even though only 32 of them are being printed.

So i'd say there's some sort of bug in this version of grub's pxe code
that makes it unable to fetch anything larger than 50KiB.

This is *not* a problem when pxebooting with grub 1.99.

can i provide any more details that would help track this down?

   --dkg




reply via email to

[Prev in Thread] Current Thread [Next in Thread]