Date: Tue, 7 Nov 2006 09:39:38 -0700 From: John E Hein <jhein@timing.com> To: Divacky Roman <xdivac02@stud.fit.vutbr.cz> Cc: emulation@freebsd.org Subject: Re: [PATCH]: possible fix for the fifoor problem Message-ID: <17744.46794.149852.319567@gromit.timing.com> In-Reply-To: <20061106174033.GA70360@stud.fit.vutbr.cz> References: <20061106174033.GA70360@stud.fit.vutbr.cz>
next in thread | previous in thread | raw e-mail | index | archive | help
Divacky Roman wrote at 18:40 +0100 on Nov 6, 2006: > pls test > www.stud.fit.vutbr.cz/~xdivac02/linux-fifoor.patch > > and tell me if that helps you with fifoor affected tests (dup05, select03) > > I cannot afford panic now so I am unable to test ;( and wider testing > never hurts :) The patch fails against RELENG_6 and -CURRENT. It is probably against a local or p4 version? Here's one against RELENG_6 (that should also work for current). Index: sys/compat/linux/linux_file.c =================================================================== RCS file: /base/FreeBSD-CVS/src/sys/compat/linux/linux_file.c,v retrieving revision 1.91.2.1 diff -u -p -r1.91.2.1 linux_file.c --- sys/compat/linux/linux_file.c 17 Sep 2006 10:56:15 -0000 1.91.2.1 +++ sys/compat/linux/linux_file.c 7 Nov 2006 15:52:21 -0000 @@ -92,6 +92,7 @@ linux_open(struct thread *td, struct lin struct proc *p = td->td_proc; char *path; int bsd_flags, error; + struct stat sb; if (args->flags & LINUX_O_CREAT) LCONVPATHCREAT(td, args->path, &path); @@ -129,6 +130,11 @@ linux_open(struct thread *td, struct lin if (args->flags & LINUX_O_NOCTTY) bsd_flags |= O_NOCTTY; + /* linux opens RDWR fifos in a nonblocking manner */ + error = kern_stat(td, path, UIO_USERSPACE, &sb); + if (S_ISFIFO(sb.st_mode) && (bsd_flags & O_RDWR)) + bsd_flags |= O_NONBLOCK; + error = kern_open(td, path, UIO_SYSSPACE, bsd_flags, args->mode); PROC_LOCK(p); if (!error && !(bsd_flags & O_NOCTTY) && Anyway, after patching RELENG_6 (today's source) with the above patch, I tested it with: - run linux-seamonkey - ctrl-p to bring up print dialog box - check 'Print to File' - click the Print button - observe hang '/bin/ps -o wchan,command | grep seam' shows one process in the fifoor state. It is killable with ctrl-c. I am using linux_base-fc-4_9.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?17744.46794.149852.319567>