alloc_stats.c revision 8bd0c95908baa3af706b9e731daff9472bec74c9
18bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o/*
28bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o * alloc_stats.c --- Update allocation statistics for ext2fs
38bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o *
48bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o * Copyright (C) 2001 Theodore Ts'o.
58bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o *
68bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o * %Begin-Header%
78bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o * This file may be redistributed under the terms of the GNU Public
88bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o * License.
98bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o * %End-Header%
108bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o *
118bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o */
128bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o
138bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o#include <stdio.h>
148bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o
158bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o#include "ext2_fs.h"
168bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o#include "ext2fs.h"
178bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o
188bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'ovoid ext2fs_inode_alloc_stats(ext2_filsys fs, ext2_ino_t ino, int inuse)
198bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o{
208bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	int	group = ext2fs_group_of_ino(fs, ino);
218bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o
228bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	if (inuse > 0)
238bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o		ext2fs_mark_inode_bitmap(fs->inode_map, ino);
248bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	else
258bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o		ext2fs_unmark_inode_bitmap(fs->inode_map, ino);
268bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	fs->group_desc[group].bg_free_inodes_count -= inuse;
278bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	fs->super->s_free_inodes_count -= inuse;
288bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	ext2fs_mark_super_dirty(fs);
298bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	ext2fs_mark_ib_dirty(fs);
308bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o}
318bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o
328bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'ovoid ext2fs_block_alloc_stats(ext2_filsys fs, blk_t blk, int inuse)
338bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o{
348bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	int	group = ext2fs_group_of_blk(fs, blk);
358bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o
368bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	if (inuse > 0)
378bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o		ext2fs_mark_block_bitmap(fs->block_map, blk);
388bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	else
398bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o		ext2fs_unmark_block_bitmap(fs->block_map, blk);
408bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	fs->group_desc[group].bg_free_blocks_count -= inuse;
418bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	fs->super->s_free_blocks_count -= inuse;
428bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	ext2fs_mark_super_dirty(fs);
438bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o	ext2fs_mark_bb_dirty(fs);
448bd0c95908baa3af706b9e731daff9472bec74c9Theodore Ts'o}
45