DragonFly-2.3.1.497.g0f65b master sys/vfs/hammer hammer.h hammer_blockmap.c hammer_vfsops.c
Antonio Huete Jimenez
ahuete.devel at gmail.com
Thu Jun 25 16:22:44 PDT 2009
Hi Matt,
It seems df is not behaving as we supposed:
> df -h .
Filesystem Size Used Avail Capacity Mounted on
source 5.8G 5.7G 408M 93% /home/source
> dd if=/dev/zero of=img.img bs=1m count=512
dd: img.img: No space left on device
182+0 records in
181+0 records out
189792256 bytes transferred in 7.020841 secs (27032695 bytes/sec)
> sync
> df .
Filesystem 1K-blocks Used Avail Capacity Mounted on
source 6127616 6167328 221184 97% /home/source
df reports there's more used blocks than the total blocks in the FS.
> sudo /home/antonioh/temp/hinfo /dev/ad0s1a
Volume is ROOT
It has 107 free bigblocks
I think statvfs wasn't updated for some reason :-/
> cat /home/antonioh/temp/hinfo.c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <strings.h>
#include <unistd.h>
#include <vfs/hammer/hammer_disk.h>
int
main(int argc, char **argv) {
struct hammer_volume_ondisk *od;
int f,r;
if (argc < 2) {
fprintf(stdout, "Wrong number of parameters\n");
exit(EXIT_FAILURE);
}
f = open(argv[1], O_RDONLY);
if (f < 0) {
perror("Couldn't open file");
exit(EXIT_FAILURE);
}
od = malloc(HAMMER_BUFSIZE);
if (od == NULL) {
perror("malloc");
exit(EXIT_FAILURE);
}
bzero(od, HAMMER_BUFSIZE);
r = pread(f, od, HAMMER_BUFSIZE, 0);
if (r != HAMMER_BUFSIZE) {
fprintf(stdout, "%s is not a hammer volume\n", argv[1]);
exit(EXIT_FAILURE);
}
fprintf(stdout, "Volume is %s\n", od->vol_name);
fprintf(stdout, "It has %lld free bigblocks\n",
od->vol0_stat_freebigblocks);
return 0;
}
__Antonio
2009/6/25 Matthew Dillon <dillon at crater.dragonflybsd.org>:
>
> commit 0f65be104647b75aea01cc199143fba6a0063982
> Author: Matthew Dillon <dillon at apollo.backplane.com>
> Date: Thu Jun 25 12:50:50 2009 -0700
>
> HAMMER VFS - Take reserved space into account when reporting statvfs data
>
> Adjust statvfs data so reserved space is taken into account, so the
> filesystem starts failing modifying operations closer to when 'df' would
> otherwise say that 0 free space remains.
>
> Submitted-by: Antonio Huete Jimenez <tuxillo at quantumachine.net> (with modification)
>
> Summary of changes:
> sys/vfs/hammer/hammer.h | 11 ++++++++++-
> sys/vfs/hammer/hammer_blockmap.c | 4 +++-
> sys/vfs/hammer/hammer_vfsops.c | 4 +++-
> 3 files changed, 16 insertions(+), 3 deletions(-)
>
> http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/0f65be104647b75aea01cc199143fba6a0063982
>
>
> --
> DragonFly BSD source repository
>
More information about the Commits
mailing list