Re: splice(-> FIFO) never wakes up inotify IN_MODIFY?

From: Jan Kara
Date: Mon Jun 26 2023 - 09:52:05 EST


On Mon 26-06-23 14:57:55, Ahelenia Ziemiańska wrote:
> On Mon, Jun 26, 2023 at 02:19:42PM +0200, Ahelenia Ziemiańska wrote:
> > > splice(2) differentiates three different cases:
> > > if (ipipe && opipe) {
> > > ...
> > > if (ipipe) {
> > > ...
> > > if (opipe) {
> > > ...
> > >
> > > IN_ACCESS will only be generated for non-pipe input
> > > IN_MODIFY will only be generated for non-pipe output
> > >
> > > Similarly FAN_ACCESS_PERM fanotify permission events
> > > will only be generated for non-pipe input.
> Sorry, I must've misunderstood this as "splicing to a pipe generates
> *ACCESS". Testing reveals this is not the case. So is it really true
> that the only way to poll a pipe is a sleep()/read(O_NONBLOCK) loop?

So why doesn't poll(3) work? AFAIK it should...

Honza
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR