* Re: [PATCH 2/2] pipe: do not return POLLERR for fifo_poll [not found] ` <ilomki.fs3loe.5j02sm6rx63x13ip2d9643lta.beaver@cs.helsinki.fi> @ 2005-08-26 0:02 ` Andrew Morton 2005-08-26 7:03 ` Pekka J Enberg 0 siblings, 1 reply; 4+ messages in thread From: Andrew Morton @ 2005-08-26 0:02 UTC (permalink / raw) To: Pekka Enberg; +Cc: linux-kernel, manfred Pekka Enberg <penberg@cs.helsinki.fi> wrote: > > This patch changes fifo_poll not to return POLLERR to take care of a FIXME > in fs/pipe.c stating that "Most unices do not set POLLERR for fifos." The > comment has been there since 2.3.99-pre3 so either apply this patch or > alternatively, I can send a new one removing the unnecessary abstraction. > > ... > --- 2.6-mm.orig/fs/pipe.c > +++ 2.6-mm/fs/pipe.c > @@ -399,8 +399,8 @@ pipe_ioctl(struct inode *pino, struct fi > } > > /* No kernel lock held - fine */ > -static unsigned int > -pipe_poll(struct file *filp, poll_table *wait) > +static inline unsigned int > +__pipe_poll(struct file *filp, poll_table *wait, int can_err) > { > unsigned int mask; > struct inode *inode = filp->f_dentry->d_inode; > @@ -420,15 +420,24 @@ pipe_poll(struct file *filp, poll_table > > if (filp->f_mode & FMODE_WRITE) { > mask |= (nrbufs < PIPE_BUFFERS) ? POLLOUT | POLLWRNORM : 0; > - if (!info->readers) > + if (can_err && !info->readers) > mask |= POLLERR; > } > > return mask; > } > > -/* FIXME: most Unices do not set POLLERR for fifos */ > -#define fifo_poll pipe_poll > +static unsigned int > +pipe_poll(struct file *filp, poll_table *wait) > +{ > + return __pipe_poll(filp, wait, 1); > +} > + > +static unsigned int > +fifo_poll(struct file *filp, poll_table *wait) > +{ > + return __pipe_poll(filp, wait, 0); > +} > > static int > pipe_release(struct inode *inode, int decr, int decw) A userspace-visible change, no? So there's a risk in changing it. What do we get in return? Worried. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] pipe: do not return POLLERR for fifo_poll 2005-08-26 0:02 ` [PATCH 2/2] pipe: do not return POLLERR for fifo_poll Andrew Morton @ 2005-08-26 7:03 ` Pekka J Enberg 2005-08-26 17:16 ` Manfred Spraul 0 siblings, 1 reply; 4+ messages in thread From: Pekka J Enberg @ 2005-08-26 7:03 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, manfred Pekka Enberg <penberg@cs.helsinki.fi> wrote: > > This patch changes fifo_poll not to return POLLERR to take care of a FIXME > > in fs/pipe.c stating that "Most unices do not set POLLERR for fifos." The > > comment has been there since 2.3.99-pre3 so either apply this patch or > > alternatively, I can send a new one removing the unnecessary abstraction. On Thu, 25 Aug 2005, Andrew Morton wrote: > A userspace-visible change, no? > > So there's a risk in changing it. What do we get in return? Worried. FWIW I have been running on this for few days now without any noticeable regressions. We get a solved FIXME in return but like I said I am a happy to remove the redundant abstraction if this is too risky. Pekka ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] pipe: do not return POLLERR for fifo_poll 2005-08-26 7:03 ` Pekka J Enberg @ 2005-08-26 17:16 ` Manfred Spraul 2005-08-26 17:54 ` [PATCH] pipe: remove redundant fifo_poll abstraction Pekka Enberg 0 siblings, 1 reply; 4+ messages in thread From: Manfred Spraul @ 2005-08-26 17:16 UTC (permalink / raw) To: Pekka J Enberg; +Cc: Andrew Morton, linux-kernel Pekka J Enberg wrote: >FWIW I have been running on this for few days now without any noticeable >regressions. We get a solved FIXME in return but like I said I am a happy >to remove the redundant abstraction if this is too risky. > > > I would prefer just to remove the abstraction, together with a comment that Linux fifos behave exactly like pipes, unlike the behavior of most unices. -- Manfred ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] pipe: remove redundant fifo_poll abstraction 2005-08-26 17:16 ` Manfred Spraul @ 2005-08-26 17:54 ` Pekka Enberg 0 siblings, 0 replies; 4+ messages in thread From: Pekka Enberg @ 2005-08-26 17:54 UTC (permalink / raw) To: Andrew Morton; +Cc: Manfred Spraul, linux-kernel On Fri, 2005-08-26 at 19:16 +0200, Manfred Spraul wrote: > I would prefer just to remove the abstraction, together with a comment > that Linux fifos behave exactly like pipes, unlike the behavior of most > unices. [PATCH] pipe: remove redundant fifo_poll abstraction This patch removes a redundant fifo_poll() abstraction from fs/pipe.c and adds a big fat comment stating we set POLLERR for FIFOs too on Linux unlike most Unices. Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi> --- pipe.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) Index: 2.6-mm/fs/pipe.c =================================================================== --- 2.6-mm.orig/fs/pipe.c +++ 2.6-mm/fs/pipe.c @@ -419,6 +419,10 @@ pipe_poll(struct file *filp, poll_table if (filp->f_mode & FMODE_WRITE) { mask |= (nrbufs < PIPE_BUFFERS) ? POLLOUT | POLLWRNORM : 0; + /* + * Most Unices do not set POLLERR for FIFOs but on Linux they + * behave exactly like pipes for poll(). + */ if (!PIPE_READERS(*inode)) mask |= POLLERR; } @@ -426,9 +430,6 @@ pipe_poll(struct file *filp, poll_table return mask; } -/* FIXME: most Unices do not set POLLERR for fifos */ -#define fifo_poll pipe_poll - static int pipe_release(struct inode *inode, int decr, int decw) { @@ -572,7 +573,7 @@ struct file_operations read_fifo_fops = .read = pipe_read, .readv = pipe_readv, .write = bad_pipe_w, - .poll = fifo_poll, + .poll = pipe_poll, .ioctl = pipe_ioctl, .open = pipe_read_open, .release = pipe_read_release, @@ -584,7 +585,7 @@ struct file_operations write_fifo_fops = .read = bad_pipe_r, .write = pipe_write, .writev = pipe_writev, - .poll = fifo_poll, + .poll = pipe_poll, .ioctl = pipe_ioctl, .open = pipe_write_open, .release = pipe_write_release, @@ -597,7 +598,7 @@ struct file_operations rdwr_fifo_fops = .readv = pipe_readv, .write = pipe_write, .writev = pipe_writev, - .poll = fifo_poll, + .poll = pipe_poll, .ioctl = pipe_ioctl, .open = pipe_rdwr_open, .release = pipe_rdwr_release, ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-08-26 17:54 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <ilomk8.i0yljb.2ul6sqfgelx5ik5dngkbmbkeu.beaver@cs.helsinki.fi>
[not found] ` <ilomki.fs3loe.5j02sm6rx63x13ip2d9643lta.beaver@cs.helsinki.fi>
2005-08-26 0:02 ` [PATCH 2/2] pipe: do not return POLLERR for fifo_poll Andrew Morton
2005-08-26 7:03 ` Pekka J Enberg
2005-08-26 17:16 ` Manfred Spraul
2005-08-26 17:54 ` [PATCH] pipe: remove redundant fifo_poll abstraction Pekka Enberg
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.