Re: Swap

From: Mike Fedyk (mfedyk@matchmail.com)
Date: Tue Nov 20 2001 - 16:44:18 EST


On Tue, Nov 20, 2001 at 03:33:28PM -0600, Nick LeRoy wrote:
> On Tuesday 20 November 2001 15:18, Mike Fedyk wrote:
> > On Tue, Nov 20, 2001 at 10:05:37PM +0100, Steffen Persvold wrote:
> > > Christopher Friesen wrote:
> > > > "Richard B. Johnson" wrote:
> > > > > On Tue, 20 Nov 2001, Wolfgang Rohdewald wrote:
> > > > > > On Tuesday 20 November 2001 15:51, J.A. Magallon wrote:
> > > > > > > When a page is deleted for one executable (because we can re-read
> > > > > > > it from on-disk binary), it is discarded, not paged out.
> > > > > >
> > > > > > What happens if the on-disk binary has changed since loading the
> > > > > > program? -
> > > > >
> > > > > It can't. That's the reason for `install` and other methods of
> > > > > changing execututable files (mv exe-file exe-file.old ; cp newfile
> > > > > exe-file). The currently open, and possibly mapped file can be
> > > > > re-named, but it can't be overwritten.
> > > >
> > > > Actually, with NFS (and probably others) it can. Suppose I change the
> > > > file on the server, and it's swapped out on a client that has it
> > > > mounted. When it swaps back in, it can get the new information.
> > >
> > > This sounds really dangerous... What about shared libraries ??
> >
> > IIRC (if wrong flame...)
> >
> > When you delete an open file, the entry is removed from the directory, but
> > not unlinked until the file is closed. This is a standard UNIX semantic.
> >
> > Now, if you have a set of processes with shared memory, and one closes, and
> > another is created to replace, the new process will get the new libraries,
> > or even new version of the process. This could/will bring down the entire
> > set of processes.
> >
> > Apps like samba come to mind...
>
> *Any* time that you write to an executing executable, all bets are off. The
> most likely outcome is a big 'ol crash & burn. With a local FS, Unix
> prevents you from shooting yourself in the foot, but with NFS, fire away..
> I've done it. It *does* let you, but...
>
> Solution: Don't do that. Shut them all down, on all clients, upgrade the
> binaries, then restart the processes on the clients.
>
> As far as the scenerio that you've described, I *think* that it would
> actually work. When the new process is fork()ed, it gets a copy of the file
> descriptors from it's parent, so the file is still open to it. If it the
> exec()s, the new image no longer has any real ties to it's parent (at least,
> not that are relevant to this).
>

What about processes with shared memory such as samba 2.0?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Nov 23 2001 - 21:00:24 EST