From: Chris Mason <chris.mason@oracle.com>
To: Mike Fedyk <mfedyk@mikefedyk.com>
Cc: Tsutomu Itoh <t-itoh@jp.fujitsu.com>,
Linux Btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: The value displayed by 'ls -s' command is strange.
Date: Tue, 07 Dec 2010 14:29:26 -0500 [thread overview]
Message-ID: <1291750008-sup-1758@think> (raw)
In-Reply-To: <AANLkTi=yQGxx7P=EoAP1sOg5rakmSmb-y+5OTeGbJnyx@mail.gmail.com>
Excerpts from Mike Fedyk's message of 2010-12-07 14:16:55 -0500:
> On Tue, Dec 7, 2010 at 10:44 AM, Chris Mason <chris.mason@oracle.com>=
wrote:
> > Excerpts from Tsutomu Itoh's message of 2010-12-07 02:59:52 -0500:
> >> Hi,
> >>
> >> I think that the disk allocation size of each file becomes a monot=
one increase
> >> when the file is made.
> >> But, it sometimes return to 0. =C2=A0Is it correct?
> >
> > Well, there's a window during the processing of delayed allocation =
where
> > we don't have the bytes recorded as delalloc and we don't have the =
bytes
> > recorded in the inode yet. =C2=A0That's why they are showing up as =
zero.
> >
> > We don't call inode_add_bytes() until after we insert the extent, b=
ut we
> > drop the delalloc byte count on the file before the IO is done.
> >
> > Fixing it will be a little tricky because all the extent accounting
> > assumes the inode_add_bytes happens at extent insertion time.
> >
>=20
> How does opening the inode with O_APPEND during this window know wher=
e
> to write the bytes? If it's a pointer/cursor to the EOF then that
> size could be used during the window. Is that right?
This counter records the number of blocks allocated to the file, and
reading it with ls -l or stat is somewhat racey by nature. Most of the
time its fine, btrfs just has a really big window where the results fro=
m
ls -l seem wrong.
But, the counter really means nothing to the btrfs internals. When we
do file operations we go based on the extent pointers we find in the
tree and i_size (i_size is strictly maintained).
The incorrect results are confusing but they don't hurt the metadata
itself.
-chris
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" =
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2010-12-07 19:29 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-07 7:59 The value displayed by 'ls -s' command is strange Tsutomu Itoh
2010-12-07 9:25 ` Li Zefan
2010-12-07 23:53 ` Tsutomu Itoh
2010-12-09 10:42 ` Miao Xie
2010-12-07 18:44 ` Chris Mason
2010-12-07 19:16 ` Mike Fedyk
2010-12-07 19:29 ` Chris Mason [this message]
2010-12-07 20:07 ` Mike Fedyk
2010-12-07 20:15 ` Chris Mason
2010-12-07 22:06 ` Mike Fedyk
2010-12-08 0:15 ` Tsutomu Itoh
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=1291750008-sup-1758@think \
--to=chris.mason@oracle.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=mfedyk@mikefedyk.com \
--cc=t-itoh@jp.fujitsu.com \
/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.