diff options
Diffstat (limited to 'fs/reiserfs/bitmap.c')
| -rw-r--r-- | fs/reiserfs/bitmap.c | 91 | 
1 files changed, 91 insertions, 0 deletions
diff --git a/fs/reiserfs/bitmap.c b/fs/reiserfs/bitmap.c index d1aca1df4f9..a945cd26522 100644 --- a/fs/reiserfs/bitmap.c +++ b/fs/reiserfs/bitmap.c @@ -13,6 +13,7 @@  #include <linux/reiserfs_fs_sb.h>  #include <linux/reiserfs_fs_i.h>  #include <linux/quotaops.h> +#include <linux/seq_file.h>  #define PREALLOCATION_SIZE 9 @@ -634,6 +635,96 @@ int reiserfs_parse_alloc_options(struct super_block *s, char *options)  	return 0;  } +static void print_sep(struct seq_file *seq, int *first) +{ +	if (!*first) +		seq_puts(seq, ":"); +	else +		*first = 0; +} + +void show_alloc_options(struct seq_file *seq, struct super_block *s) +{ +	int first = 1; + +	if (SB_ALLOC_OPTS(s) == ((1 << _ALLOC_skip_busy) | +		(1 << _ALLOC_dirid_groups) | (1 << _ALLOC_packing_groups))) +		return; + +	seq_puts(seq, ",alloc="); + +	if (TEST_OPTION(concentrating_formatted_nodes, s)) { +		print_sep(seq, &first); +		if (REISERFS_SB(s)->s_alloc_options.border != 10) { +			seq_printf(seq, "concentrating_formatted_nodes=%d", +				100 / REISERFS_SB(s)->s_alloc_options.border); +		} else +			seq_puts(seq, "concentrating_formatted_nodes"); +	} +	if (TEST_OPTION(displacing_large_files, s)) { +		print_sep(seq, &first); +		if (REISERFS_SB(s)->s_alloc_options.large_file_size != 16) { +			seq_printf(seq, "displacing_large_files=%lu", +			    REISERFS_SB(s)->s_alloc_options.large_file_size); +		} else +			seq_puts(seq, "displacing_large_files"); +	} +	if (TEST_OPTION(displacing_new_packing_localities, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "displacing_new_packing_localities"); +	} +	if (TEST_OPTION(old_hashed_relocation, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "old_hashed_relocation"); +	} +	if (TEST_OPTION(new_hashed_relocation, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "new_hashed_relocation"); +	} +	if (TEST_OPTION(dirid_groups, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "dirid_groups"); +	} +	if (TEST_OPTION(oid_groups, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "oid_groups"); +	} +	if (TEST_OPTION(packing_groups, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "packing_groups"); +	} +	if (TEST_OPTION(hashed_formatted_nodes, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "hashed_formatted_nodes"); +	} +	if (TEST_OPTION(skip_busy, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "skip_busy"); +	} +	if (TEST_OPTION(hundredth_slices, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "hundredth_slices"); +	} +	if (TEST_OPTION(old_way, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "old_way"); +	} +	if (TEST_OPTION(displace_based_on_dirid, s)) { +		print_sep(seq, &first); +		seq_puts(seq, "displace_based_on_dirid"); +	} +	if (REISERFS_SB(s)->s_alloc_options.preallocmin != 0) { +		print_sep(seq, &first); +		seq_printf(seq, "preallocmin=%d", +				REISERFS_SB(s)->s_alloc_options.preallocmin); +	} +	if (REISERFS_SB(s)->s_alloc_options.preallocsize != 17) { +		print_sep(seq, &first); +		seq_printf(seq, "preallocsize=%d", +				REISERFS_SB(s)->s_alloc_options.preallocsize); +	} +} +  static inline void new_hashed_relocation(reiserfs_blocknr_hint_t * hint)  {  	char *hash_in;  |