From: Steve Fosdick <lists@pelvoux.nildram.co.uk>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] How are the temporary files (-snapshot) created on Linux?
Date: Fri, 12 Sep 2008 12:24:58 +0100 [thread overview]
Message-ID: <1221218698.7793.0@ecrins> (raw)
In-Reply-To: <200809121218.50167.yann.morin.1998@anciens.enib.fr> (from yann.morin.1998@anciens.enib.fr on Fri Sep 12 11:18:50 2008)
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.
Regards,
Steve.
next prev parent reply other threads:[~2008-09-12 11:42 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 [this message]
2008-09-12 14:52 ` EQX
2008-09-12 16:57 ` Jamie Lokier
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=1221218698.7793.0@ecrins \
--to=lists@pelvoux.nildram.co.uk \
--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).