Files
reiserfsprogs/fsck/pass4.c
T
Jeff Mahoney 47cff72748 cleanup: run indent with the Linux Kernel style across all code
Over the years, the reiserfs kernel code has been gradually cleaned up
to be more readable. This patch does the same to the progs code.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
2013-08-26 17:14:42 -04:00

92 lines
1.9 KiB
C

/*
* Copyright 1996-2004 by Hans Reiser, licensing governed by
* reiserfsprogs/README
*/
#include "fsck.h"
void pass_4_check_unaccessed_items(void)
{
struct reiserfs_key key;
struct reiserfs_path path;
int i;
struct buffer_head *bh;
struct item_head *ih;
unsigned long items;
struct reiserfs_key *rdkey;
path.path_length = ILLEGAL_PATH_ELEMENT_OFFSET;
key = root_dir_key;
fsck_progress("Pass 4 - ");
items = 0;
while (reiserfs_search_by_key_4(fs, &key, &path) == ITEM_FOUND) {
bh = PATH_PLAST_BUFFER(&path);
/* print ~ how many leaves were scanned and how fast it was */
if (!fsck_quiet(fs))
print_how_fast(items++, 0, 50, 0);
for (i = get_item_pos(&path), ih = get_ih(&path);
i < B_NR_ITEMS(bh); i++, ih++) {
if (!is_item_reachable(ih)) {
PATH_LAST_POSITION(&path) = i;
rdkey = reiserfs_next_key(&path);
if (rdkey)
key = *rdkey;
else
memset(&key, 0xff, KEY_SIZE);
pass_4_stat(fs)->deleted_items++;
reiserfsck_delete_item(&path, 0);
goto cont;
}
if (get_ih_flags(ih) != 0) {
clean_ih_flags(ih);
mark_buffer_dirty(bh);
}
}
PATH_LAST_POSITION(&path) = i - 1;
rdkey = reiserfs_next_key(&path);
if (rdkey)
key = *rdkey;
else
memset(&key, 0xff, KEY_SIZE);
pathrelse(&path);
cont:
/* to make gcc 3.2 do not sware here */ ;
}
pathrelse(&path);
fsck_progress("finished\n");
stage_report(4, fs);
/* after pass 4 */
/* put bitmap on place */
reiserfs_bitmap_copy(fs->fs_bitmap2, fsck_new_bitmap(fs));
/* update super block */
set_sb_free_blocks(fs->fs_ondisk_sb,
reiserfs_bitmap_zeros(fsck_new_bitmap(fs)));
mark_buffer_dirty(fs->fs_super_bh);
/* write all dirty blocks */
fsck_progress("Flushing..");
fs->fs_dirt = 1;
id_map_flush(proper_id_map(fs), fs);
reiserfs_flush_to_ondisk_bitmap(fs->fs_bitmap2, fs);
reiserfs_flush(fs);
fsck_progress("finished\n");
return;
}