Date: Tue, 7 Nov 2006 12:01:07 -0500 From: Jung-uk Kim <jkim@FreeBSD.org> To: freebsd-emulation@FreeBSD.org Subject: Re: [PATCH]: possible fix for the fifoor problem Message-ID: <200611071201.11899.jkim@FreeBSD.org> In-Reply-To: <17744.46794.149852.319567@gromit.timing.com> References: <20061106174033.GA70360@stud.fit.vutbr.cz> <17744.46794.149852.319567@gromit.timing.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Boundary-00=_XvLUFuHvM2Pa7el Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline On Tuesday 07 November 2006 11:39 am, John E Hein wrote: > 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. Try the attached patch instead. Jung-uk Kim --Boundary-00=_XvLUFuHvM2Pa7el Content-Type: text/x-diff; charset="iso-8859-1"; name="linux_stats.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="linux_stats.diff" --- src/sys/compat/linux/linux_stats.c.orig Sun Oct 22 07:52:11 2006 +++ src/sys/compat/linux/linux_stats.c Tue Nov 7 11:59:21 2006 @@ -130,7 +130,7 @@ int temp; temp = td->td_retval[0]; - if (kern_open(td, path, UIO_SYSSPACE, O_RDONLY, 0) != 0) + if (kern_open(td, path, UIO_SYSSPACE, O_RDONLY | O_NONBLOCK, 0) != 0) return; fd = td->td_retval[0]; td->td_retval[0] = temp; --Boundary-00=_XvLUFuHvM2Pa7el--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200611071201.11899.jkim>