[bug #40363] TFTP: Files bigger than 63 MB generate error: timeout reading `/boot/initrd'.
Update of bug #40363 (project grub): Status:None = Fixed Open/Closed:Open = Closed ___ Follow-up Comment #6: comitted modification of my patch. ___ Reply to this item at: http://savannah.gnu.org/bugs/?40363 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ Bug-grub mailing list Bug-grub@gnu.org https://lists.gnu.org/mailman/listinfo/bug-grub
[bug #40363] TFTP: Files bigger than 63 MB generate error: timeout reading `/boot/initrd'.
Follow-up Comment #5, bug #40363 (project grub): When the block number gets over 0x the last packet gets ack'ed twice and grub shows this error: error: not an IP. (Due to an tcpdump at the tftp server; the tftp server itself is logging that the file was sent successfully.) (With the patch #29471 tftp.diff applied on top of yesterdays git c16535a845dcbb2b1d3b42994d3b72b8dc088a38) I think this is because ack_sent stores only the 2 byte block number. When storing in ack_sent the real block number like in attached patch it works when the block number turns over. (And works also for smaller files.) (Tested indeed only in a tiny network with one VM as server, one VM and one PC as clients.) (file #29478) ___ Additional Item Attachment: File name: 0001-TFTP-Handle-overflow-in-blocknumber-fixes-bug-40363-try-4.patch Size:2 KB ___ Reply to this item at: http://savannah.gnu.org/bugs/?40363 ___ Nachricht gesendet von/durch Savannah http://savannah.gnu.org/ ___ Bug-grub mailing list Bug-grub@gnu.org https://lists.gnu.org/mailman/listinfo/bug-grub
[bug #40363] TFTP: Files bigger than 63 MB generate error: timeout reading `/boot/initrd'.
Follow-up Comment #2, bug #40363 (project grub): This patch worked only by chance that the priority queue was empty at the moment of wraparound. ___ Reply to this item at: http://savannah.gnu.org/bugs/?40363 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ Bug-grub mailing list Bug-grub@gnu.org https://lists.gnu.org/mailman/listinfo/bug-grub
[bug #40363] TFTP: Files bigger than 63 MB generate error: timeout reading `/boot/initrd'.
Follow-up Comment #3, bug #40363 (project grub): Then if the datatype change is removed the sorting in the priority queue is still correct and only when comparing with the network data using only the lowest 2 bytes? (new adjusted patch) (file #29470) ___ Additional Item Attachment: File name: 0001-TFTP-Handle-overflow-in-blocknumber-fixes-bug-40363-try-2.patch Size:1 KB ___ Reply to this item at: http://savannah.gnu.org/bugs/?40363 ___ Nachricht gesendet von/durch Savannah http://savannah.gnu.org/ ___ Bug-grub mailing list Bug-grub@gnu.org https://lists.gnu.org/mailman/listinfo/bug-grub
[bug #40363] TFTP: Files bigger than 63 MB generate error: timeout reading `/boot/initrd'.
Follow-up Comment #4, bug #40363 (project grub): If packet for 1 reaches GRUB before packet then packet 1 would be considered to come before and will be processed as delayed retransmission and GRUB will discard it but (re)send ack for , then it will take packet for and process it correctly, send ack for . Then server will see ack for and which it will interpret as 1 and go on with sending 10001 and GRUB will wait for 1 which it will never receive. The reason why it worked for you is combination of #40293 and your network being perfect (no losses or duplicates). The full problem is more complex than casting few types. In general there is no solution. Imagine that packet for 0 got duplicate in network and delayed and arrives at the same time as and before 1. Then there is no way to distinguish this situation from packet 1 arriving. You can handle it only by introducing some assumptions. The most sensible is that you never have packets more than 0x8000 apart. Then (grub_int16_t)(a-b) would give correct compare. Please try attached patch. (file #29471) ___ Additional Item Attachment: File name: tftp.diff Size:1 KB ___ Reply to this item at: http://savannah.gnu.org/bugs/?40363 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ Bug-grub mailing list Bug-grub@gnu.org https://lists.gnu.org/mailman/listinfo/bug-grub
[bug #40363] TFTP: Files bigger than 63 MB generate error: timeout reading `/boot/initrd'.
URL: http://savannah.gnu.org/bugs/?40363 Summary: TFTP: Files bigger than 63 MB generate error: timeout reading `/boot/initrd'. Project: GNU GRUB Submitted by: bernhardu Submitted on: Do 24 Okt 2013 15:10:34 GMT Category: Network Severity: Major Priority: 5 - Normal Item Group: Software Error Status: None Privacy: Public Assigned to: None Originator Name: Originator Email: Open/Closed: Open Discussion Lock: Any Release: Release: Bazaar - trunk Reproducibility: Every Time Planned Release: None ___ Details: When attempting to load a file with a size bigger than 63 MB over TFTP grub shows this error message: error: timeout reading `/boot/initrd'. The problem lies in the blocknumber assigned to each network packet. TFTP uses only 2 bytes for it, therefore continuing after the overflow with blocknumber 0. This overflow happens with a blocksize of 1024 after 63 MB. (With current git of today f70d5c0701c6edf7f83c2e5ad01d29962b0aabd0) ___ Reply to this item at: http://savannah.gnu.org/bugs/?40363 ___ Nachricht gesendet von/durch Savannah http://savannah.gnu.org/ ___ Bug-grub mailing list Bug-grub@gnu.org https://lists.gnu.org/mailman/listinfo/bug-grub
[bug #40363] TFTP: Files bigger than 63 MB generate error: timeout reading `/boot/initrd'.
Additional Item Attachment, bug #40363 (project grub): File name: 0001-TFTP-Handle-overflow-in-blocknumber-fixes-bug-40363.patch Size:1 KB ___ Reply to this item at: http://savannah.gnu.org/bugs/?40363 ___ Nachricht gesendet von/durch Savannah http://savannah.gnu.org/ ___ Bug-grub mailing list Bug-grub@gnu.org https://lists.gnu.org/mailman/listinfo/bug-grub