2008-02-16 17:43:25

by Gunter Ohrner

[permalink] [raw]
Subject: vfat32 Free Cluster Count Update

Hi!

Doesn't the Linux vfat driver update the FAT32's free cluster summary count?

Zweiblum:~# dosfsck /dev/sda11
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
/dev/sda11: 2451 files, 28218/1918827 clusters

Zweiblum:~# mount /dev/sda11 /mnt/win_daten/

Zweiblum:~# cp /etc/motd /mnt/win_daten/

Zweiblum:~# umount /mnt/win_daten/

Zweiblum:~# dosfsck /dev/sda11
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
Free cluster summary wrong (1890609 vs. really 1890608)
1) Correct
2) Don't correct
? ^C

Zweiblum:~# uname -a
Linux Zweiblum 2.6.24-1-686 #1 SMP Mon Feb 11 14:37:45 UTC 2008 i686
GNU/Linux

Greetings,

Gunter


2008-02-19 10:23:30

by OGAWA Hirofumi

[permalink] [raw]
Subject: Re: vfat32 Free Cluster Count Update

Gunter Ohrner <[email protected]> writes:

> Doesn't the Linux vfat driver update the FAT32's free cluster summary count?
>
> Zweiblum:~# dosfsck /dev/sda11
> dosfsck 2.11, 12 Mar 2005, FAT32, LFN
> /dev/sda11: 2451 files, 28218/1918827 clusters
>
> Zweiblum:~# mount /dev/sda11 /mnt/win_daten/
>
> Zweiblum:~# cp /etc/motd /mnt/win_daten/
>
> Zweiblum:~# umount /mnt/win_daten/
>
> Zweiblum:~# dosfsck /dev/sda11
> dosfsck 2.11, 12 Mar 2005, FAT32, LFN
> Free cluster summary wrong (1890609 vs. really 1890608)
> 1) Correct
> 2) Don't correct
> ? ^C

This problem was introduced by it ignores a free cluster count (not
"usefree"). If we was not using "usefree" option, FAT doesn't trust the
"free cluster count" anymore.

So, it doesn't update until re-count. Um.. yes, it's a bit
problem. Ah.. it can fix "we can trust now"-flag or something.

I'll dig it more, later. And for right now, please run "df" command, it
will fix free cluster count.

Thanks.
--
OGAWA Hirofumi <[email protected]>

2008-02-20 00:33:25

by Valdis Klētnieks

[permalink] [raw]
Subject: Re: vfat32 Free Cluster Count Update

On Tue, 19 Feb 2008 19:23:12 +0900, OGAWA Hirofumi said:

> I'll dig it more, later. And for right now, please run "df" command, it
> will fix free cluster count.

Wow, that's a real kick in the head for all of us who have a mental concept
of 'df' being basically a read-only program, and "fixing counts" to be more
the job of 'fsck'.... :)

(Or is 'df' simply a known way to force execution of a code path that ends up
fixing the counts as a side-effect?)


Attachments:
(No filename) (226.00 B)

2008-02-20 02:09:43

by OGAWA Hirofumi

[permalink] [raw]
Subject: Re: vfat32 Free Cluster Count Update

[email protected] writes:

> (Or is 'df' simply a known way to force execution of a code path that ends up
> fixing the counts as a side-effect?)

Yes. df calls statfs(2), and FAT counts free clusters for ->f_ffree for
it. Then, the free clusters count is fixed as a side-effect.
--
OGAWA Hirofumi <[email protected]>

2008-02-20 10:35:58

by Jan Engelhardt

[permalink] [raw]
Subject: Re: vfat32 Free Cluster Count Update


On Feb 19 2008 19:23, OGAWA Hirofumi wrote:
>
>This problem was introduced by it ignores a free cluster count (not
>"usefree"). If we was not using "usefree" option, FAT doesn't trust the
>"free cluster count" anymore.
>
>So, it doesn't update until re-count. Um.. yes, it's a bit
>problem. Ah.. it can fix "we can trust now"-flag or something.
>
>I'll dig it more, later. And for right now, please run "df" command, it
>will fix free cluster count.
>
Ah, _that's_ why the first invocation `df` command after a fresh boot
always takes so long!