All of lore.kernel.org
 help / color / mirror / Atom feed
From: Phillip Lougher <phillip@lougher.demon.co.uk>
To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: adilger@sun.com, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: Zero-clearing all zero-clearable bytes.
Date: Sun, 23 Nov 2008 03:05:47 +0000	[thread overview]
Message-ID: <4928C88B.3040101@lougher.demon.co.uk> (raw)
In-Reply-To: <200811230915.CII90122.SFtOMFQHOVLOFJ@I-love.SAKURA.ne.jp>

Tetsuo Handa wrote:
> Hello.
> 
> Andreas Dilger wrote:
>> Why would you fill the buffer with 0xff instead of 0?
>> In fact no such program is needed, just "dd if=/dev/zero of=/{fs}/tmp"
>> and then delete the file.
>>
> To avoid that the /{fs}/tmp is created as a sparse file.
> 

Most filesystems will not create a sparse file if zero-byte filled 
blocks are written.  To create a sparse file you normally have to seek 
beyond the file end and then write blocks, leaving a hole in-between the 
positions.

The information from stat can tell you if a file has been stored 
sparsely, because the blocks used count will be less than the file size 
suggests.

For example:

$ dd if=/dev/zero of=small-file bs=512 count=16
16+0 records in
16+0 records out
8192 bytes (8.2 kB) copied, 0.000187744 seconds, 43.6 MB/s
phillip@dylan:/tmp$ stat small-file
   File: `small-file'
   Size: 8192            Blocks: 16         IO Block: 4096   regular file
Device: 801h/2049d      Inode: 847831      Links: 1

The zero filled file uses 16 blocks (16 * 512 bytes = 8K), and so we 
know it isn't sparsely stored.

You can get dd to seek a number of blocks into the output file before 
writing, this will create a sparse file...

$ dd if=/dev/zero of=small-file bs=512 count=16 seek=16
16+0 records in
16+0 records out
8192 bytes (8.2 kB) copied, 0.000212609 seconds, 38.5 MB/s
phillip@dylan:/tmp$ stat small-file
   File: `small-file'
   Size: 16384           Blocks: 16         IO Block: 4096   regular file
Device: 801h/2049d      Inode: 847831      Links: 1

A 16K file is only using 16 blocks, and so 8K is stored sparsely.

Phillip

  reply	other threads:[~2008-11-23  3:55 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-22  3:36 Zero-clearing all zero-clearable bytes Tetsuo Handa
2008-11-22 17:44 ` Andreas Dilger
2008-11-23  0:15   ` Tetsuo Handa
2008-11-23  3:05     ` Phillip Lougher [this message]
2008-11-23  4:27 ` Phillip Lougher
2008-11-23  5:03   ` Tetsuo Handa
2008-11-23 11:25     ` Henrique de Moraes Holschuh
2008-11-24 14:56       ` Martin Steigerwald
2008-11-25 10:59         ` Tetsuo Handa

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=4928C88B.3040101@lougher.demon.co.uk \
    --to=phillip@lougher.demon.co.uk \
    --cc=adilger@sun.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=penguin-kernel@I-love.SAKURA.ne.jp \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.