Re: 2.4 bug: fifo-write causes diskwrites to read-only fs !

From: Rob van Nieuwkerk (robn@verdi.et.tudelft.nl)
Date: Wed May 28 2003 - 15:56:40 EST



Hi Richard,

> > > > > It turns out that Linux is updating inode timestamps of fifos (named
> > > > > pipes) that are written to while residing on a read-only filesystem.
> > > > > It is not only updating in-ram info, but it will issue *physical*
> > > > > writes to the read-only fs on the disk !

> > > FYI, I created a FIFO with mkfifo, remounted the file-system
> > > R/O, executed `cat` with it's input coming from the FIFO, and
> > > then waited for a few minutes. I then wrote to the FIFO.
> > > The atime did not change with 2.4.20.
> >
> > Just did the same here (on my workstation). And the times *did* change ..
> > More precisely: the "modification" & "change" were updated, the "access"
> > time remained unchanged.
> >
>
> Okay. I can now verify the problem. There are two problems as this

Yeah !, I'm no longer alone .. :-)
.
.
> As you can clearly see, access time (atime) is not changed.
> However, both ctime and mtime are both changed with every
> FIFO access. Since this FIFO is provably on a R/O file system,
> nothing should change.

Note that the fact that you see the times changing in the fs while it
is mounted doesn't imply a problem in itself: serial and tty device
nodes get their time-stamps updated too on a read-only fs when they
are written. But these changes are in ram only: when you reboot you
get the old values back.

But with FIFOs the changes *do* get written out to the read-only fs !

Hmm, wonder what happens if you try it on a real read-only medium like
a CDR. Maybe kernel errors/panic ..

> Now, somebody will probably claim that this is the correct
> POSIX defined behavior <sigh> so you might have to make some
> work-around like use a pipe or socket instead of the FIFO??

Seems very stupid to me if POSIX specifies this.
I don't have the POSIX spec, but maybe it specifies what "read-only"
is supposed to mean somewhere too ..

But let's wait & see .. :-)

greetings,
Rob van Nieuwkerk
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/