From: Jamie Lokier <jamie@shareable.org>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] How are the temporary files (-snapshot) created on Linux?
Date: Fri, 12 Sep 2008 17:57:17 +0100 [thread overview]
Message-ID: <20080912165716.GB12849@shareable.org> (raw)
In-Reply-To: <1221218698.7793.0@ecrins>
Steve Fosdick wrote:
> On 12/09/08 11:18:50, Yann E. MORIN wrote:
> > Hello!
> >
> > On Friday 12 September 2008 08:04:02 EQX wrote:
> > > The code says the -snapshot temporary files are created here:
> > > /tmp/vl.*, but they are never visible for users. Using lsof,
> > > they have a state of 'deleted'. How does this work exactly?
> > > What type of file is this?
> >
> > It's done via some incantation of open(2) followed by unlink(2),
> > something
> > like:
> >
> > int fd;
> > fd = open( "/tmp/vl.xxx", O_CREAT|... );
> > unlink( "/tmp/vl.xxx" );
> > /* Use the file somehow */
> > close( fd );
> >
> > Regards,
> > Yann E. MORIN.
>
> There is nothing special about the files concerned. The key to this is
> that, unlike some other operating systems, Linux (like Unix) allows an
> open file to be deleted and has a well defined way to deal with that
> happenning.
>
> When an open file is deleted only the file name is actually deleted.
> The data in the file (and any new data written to the file) are kept
> until the last process to have the file open closes the file whereupon
> the second half of the delete happens, i.e. deallocating the disk
> storage and returning it to the free space.
>
> This mechanism is exploited by a process that opens a file and
> immediately deletes it like the example above for two reasons:
>
> 1. It provides a way to guarantee that the file not exist after the
> process concerned has finished even if it finishes abnormally or gets
> killed for some reason.
>
> 2. As a security measure. Once the file name has been deleted there is
> no way for any other process to stumble upon the file and open it.
>
> The second point is negated somewhat by the /proc filesystem.
Also both points are negated for a brief time window by the fact you
have to have the file exist momentarily - there's no O_UNLINK flag to open.
-- Jamie
prev parent reply other threads:[~2008-09-12 16:57 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-12 6:04 [Qemu-devel] How are the temporary files (-snapshot) created on Linux? EQX
2008-09-12 10:18 ` Yann E. MORIN
2008-09-12 11:24 ` Steve Fosdick
2008-09-12 14:52 ` EQX
2008-09-12 16:57 ` Jamie Lokier [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080912165716.GB12849@shareable.org \
--to=jamie@shareable.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).