Re: kern/170203: [kern] piped dd's don't behave sanely when deal

看板FB_bugs作者時間13年前 (2012/07/27 19:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/8 (看更多)
The following reply was made to PR kern/170203; it has been noted by GNATS. From: Bruce Evans <brde@optusnet.com.au> To: davidxu@FreeBSD.org Cc: Bruce Evans <brde@optusnet.com.au>, Garrett Cooper <yanegomi@gmail.com>, freebsd-bugs@FreeBSD.org, freebsd-gnats-submit@FreeBSD.org Subject: Re: kern/170203: [kern] piped dd's don't behave sanely when dealing with a fifo Date: Fri, 27 Jul 2012 21:08:13 +1000 (EST) On Fri, 27 Jul 2012, David Xu wrote: > On 2012/7/27 10:07, Bruce Evans wrote: >> >> I think it's working almost as expected. Large blocks give non-atomic >> I/O, so the reader sees small blocks, then EOF when it gets ahead of >> the writer. This always happens without SMP. >> >> Not is a bug (debugged below). There is no SIGPIPE at the start of >> write() because there is a reader then, and no SIGPIPE for the next >> write() because there is no next write() -- the current one doesn't >> notice when the reader goes away. >> > After fixed dd to not open fifo output file in O_RDWR mode, I still found the > writer is blocked there even the reader is already exited. I'm not sure that dd's open is a bug. It must be intentional to use O_RDWR for some cases. POSIX (old 2001 draft) doesn't say anything about dd's open mode. > I think this is definitely a bug. if reader is exited, the writer should be > aborted too, > but I found it still be blocked in state "pipedwt", obviously, the code in > /sys/fs/fifo_vnops.c wants to wake up the writer when the reader is closing > the fifo, > but it failed, because the bit flag PIPE_WANTW is forgotten to be set by > writer, > so it skips executing wakeup(), and then the writer has no chance to find EOF > bit flag > is set. Does this affect nameless pipes too? The old implementation presumably doesn't have this bug. Bruce _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscribe@freebsd.org"
文章代碼(AID): #1G4dmp3z (FB_bugs)
討論串 (同標題文章)
文章代碼(AID): #1G4dmp3z (FB_bugs)