🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72943

Re: Blokujący read i niepełne dane

#72943
From: Bogdan
Date: Sun, 02 Aug 2020 15:05
49 lines
2734 bytes
W dniu 16.07.2020 o 16:04, heby pisze:
> Cześć.
> 
> Mam named pipe (mkfifo).
> 
> Po jednej stronie ktoś robi 1000000 == ::write (pointer, 1000000);
> 
> Po drugiej stronie ktoś robi 1000000 == ::read (pointer, 1000000);
> 
> Wszystko działa, dostaje dane.
> 
> I przychodzi kernel 5.6.x gdzie "coś naprawiono w rurkach".
> 
> https://www.phoronix.com/scan.php?page=news_item&px=Linux-Pipe-Parallel-Job-Opt
> 
> 
> I teraz, ku mojemy zdziwieniu, dostaje:
> 
> size = ::read (pointer, 1000000);
> 
> Gdzie size jest 61578.
> 
> Coś podejrzanie blisko rozmiarowi bufora rurki, czyli 64k.
> 
> Manula klęczy na kolanach i zapewnia mnie że read w trybie bookującym
> nigdy nie wyjdzie z innym size niż kiedy jest fatal lub INTR, ale
> nawet wtedy size jest -1. Stackoverflow nieśmiało mu przytakuje.
> 
> A tu read wychodzi sobie w połowie czytania zwracając częśc danych ...
> 
> O rzesz...
> 
> Ja mam buga/zaćmienie czy Torvalds odwalł dziadówę w kernelu?


 Nikt jeszcze nie odpisał, to może ja się podzielę swoim
przemyśleniem: jeśli "::read" to odpowiednik read(2) (a pytam, bo
brakuje parametru), to jeśli mogłeś zapisać milion bajtów i od razu
odczytać też milion, to masz dość wydajny system lub szczęście, że nic
nie przeszkadzało w trakcie (lub jeszcze jakieś czynniki).
 Generalnie, read() powinno umieszczać się w pętli i czytać tyle razy,
aż uzbiera się tyle danych, ile się chciało od początku.
 Być może najnowsze zmiany w jądrze po prostu to ujawniły.

-- 
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):            http://bogdro.evai.pl
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org www.TorProject.org  Soft(EN): http://bogdro.evai.pl/soft
Technical Details
Message-ID: <rg6knp$trq$1@gioia.aioe.org>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!feeder1.feed.usenet.farm!feed.usenet.farm!aioe.org!.POSTED.YGlYgy4UiKzOsWMcQQTs4Q.user.gioia.aioe.org!not-for-mail
References: <repmov$olv$1@dont-email.me>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!feeder1.feed.usenet.farm!feed.usenet.farm!aioe.org!.POSTED.YGlYgy4UiKzOsWMcQQTs4Q.user.gioia.aioe.org!not-for-mail
From: Bogdan <bogdan@poczta.gazeta.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: Blokujący read i niepełne dane
Date: Sun, 2 Aug 2020 17:05:30 +0200
Organization: Aioe.org NNTP Server
Lines: 49
Message-ID: <rg6knp$trq$1@gioia.aioe.org>
References: <repmov$olv$1@dont-email.me>
NNTP-Posting-Host: YGlYgy4UiKzOsWMcQQTs4Q.user.gioia.aioe.org
Mime-Version: 1.0
X-Complaints-To: abuse@aioe.org
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0
X-Notice: Filtered by postfilter v. 0.9.2
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit