Exemple #1
0
int reiserfs_journal_in_proc( char *buffer, char **start, off_t offset,
			      int count, int *eof, void *data )
{
	struct super_block *sb;
	struct reiserfs_sb_info *r;
	struct reiserfs_super_block *rs;
	struct journal_params *jp;	
	int len = 0;
    
	sb = procinfo_prologue( ( kdev_t ) ( long ) data );
	if( sb == NULL )
		return -ENOENT;
	r = &sb->u.reiserfs_sb;
	rs = r -> s_rs;
	jp = &rs->s_v1.s_journal;

	len += sprintf( &buffer[ len ], 
			/* on-disk fields */
 			"jp_journal_1st_block: \t%i\n"
 			"jp_journal_dev: \t%s[%x]\n"
 			"jp_journal_size: \t%i\n"
 			"jp_journal_trans_max: \t%i\n"
 			"jp_journal_magic: \t%i\n"
 			"jp_journal_max_batch: \t%i\n"
 			"jp_journal_max_commit_age: \t%i\n"
			"jp_journal_max_trans_age: \t%i\n"
			/* incore fields */
			"j_1st_reserved_block: \t%i\n" 
			"j_state: \t%li\n"			
			"j_trans_id: \t%lu\n"
			"j_mount_id: \t%lu\n"
			"j_start: \t%lu\n"
			"j_len: \t%lu\n"
			"j_len_alloc: \t%lu\n"
			"j_wcount: \t%i\n"
			"j_bcount: \t%lu\n"
			"j_first_unflushed_offset: \t%lu\n"
			"j_last_flush_trans_id: \t%lu\n"
			"j_trans_start_time: \t%li\n"
			"j_journal_list_index: \t%i\n"
			"j_list_bitmap_index: \t%i\n"
			"j_must_wait: \t%i\n"
			"j_next_full_flush: \t%i\n"
			"j_next_async_flush: \t%i\n"
			"j_cnode_used: \t%i\n"
			"j_cnode_free: \t%i\n"
			"\n"
			/* reiserfs_proc_info_data_t.journal fields */
			"in_journal: \t%12lu\n"
			"in_journal_bitmap: \t%12lu\n"
			"in_journal_reusable: \t%12lu\n"
			"lock_journal: \t%12lu\n"
			"lock_journal_wait: \t%12lu\n"
			"journal_begin: \t%12lu\n"
			"journal_relock_writers: \t%12lu\n"
			"journal_relock_wcount: \t%12lu\n"
			"mark_dirty: \t%12lu\n"
			"mark_dirty_already: \t%12lu\n"
			"mark_dirty_notjournal: \t%12lu\n"
			"restore_prepared: \t%12lu\n"
			"prepare: \t%12lu\n"
			"prepare_retry: \t%12lu\n",

                        DJP( jp_journal_1st_block ),
                        DJP( jp_journal_dev ) == 0 ? "none" : bdevname(to_kdev_t(DJP( jp_journal_dev ))),
                        DJP( jp_journal_dev ),
                        DJP( jp_journal_size ),
                        DJP( jp_journal_trans_max ),
                        DJP( jp_journal_magic ),
                        DJP( jp_journal_max_batch ),
                        DJP( jp_journal_max_commit_age ),
                        DJP( jp_journal_max_trans_age ),

 			JF( j_1st_reserved_block ),
			JF( j_state ),			
			JF( j_trans_id ),
			JF( j_mount_id ),
			JF( j_start ),
			JF( j_len ),
			JF( j_len_alloc ),
			atomic_read( & r -> s_journal -> j_wcount ),
			JF( j_bcount ),
			JF( j_first_unflushed_offset ),
			JF( j_last_flush_trans_id ),
			JF( j_trans_start_time ),
			JF( j_journal_list_index ),
			JF( j_list_bitmap_index ),
			JF( j_must_wait ),
			JF( j_next_full_flush ),
			JF( j_next_async_flush ),
			JF( j_cnode_used ),
			JF( j_cnode_free ),

			SFPJ( in_journal ),
			SFPJ( in_journal_bitmap ),
			SFPJ( in_journal_reusable ),
			SFPJ( lock_journal ),
			SFPJ( lock_journal_wait ),
			SFPJ( journal_being ),
			SFPJ( journal_relock_writers ),
			SFPJ( journal_relock_wcount ),
			SFPJ( mark_dirty ),
			SFPJ( mark_dirty_already ),
			SFPJ( mark_dirty_notjournal ),
			SFPJ( restore_prepared ),
			SFPJ( prepare ),
			SFPJ( prepare_retry )
		);

	procinfo_epilogue( sb );
	return reiserfs_proc_tail( len, buffer, start, offset, count, eof );
}
static int show_journal(struct seq_file *m, void *unused)
{
	struct super_block *sb = m->private;
	struct reiserfs_sb_info *r = REISERFS_SB(sb);
	struct reiserfs_super_block *rs = r->s_rs;
	struct journal_params *jp = &rs->s_v1.s_journal;
	char b[BDEVNAME_SIZE];

	seq_printf(m,		/* on-disk fields */
		   "jp_journal_1st_block: \t%i\n"
		   "jp_journal_dev: \t%s[%x]\n"
		   "jp_journal_size: \t%i\n"
		   "jp_journal_trans_max: \t%i\n"
		   "jp_journal_magic: \t%i\n"
		   "jp_journal_max_batch: \t%i\n"
		   "jp_journal_max_commit_age: \t%i\n"
		   "jp_journal_max_trans_age: \t%i\n"
		   /* incore fields */
		   "j_1st_reserved_block: \t%i\n"
		   "j_state: \t%li\n"
		   "j_trans_id: \t%u\n"
		   "j_mount_id: \t%lu\n"
		   "j_start: \t%lu\n"
		   "j_len: \t%lu\n"
		   "j_len_alloc: \t%lu\n"
		   "j_wcount: \t%i\n"
		   "j_bcount: \t%lu\n"
		   "j_first_unflushed_offset: \t%lu\n"
		   "j_last_flush_trans_id: \t%u\n"
		   "j_trans_start_time: \t%li\n"
		   "j_list_bitmap_index: \t%i\n"
		   "j_must_wait: \t%i\n"
		   "j_next_full_flush: \t%i\n"
		   "j_next_async_flush: \t%i\n"
		   "j_cnode_used: \t%i\n" "j_cnode_free: \t%i\n" "\n"
		   /* reiserfs_proc_info_data_t.journal fields */
		   "in_journal: \t%12lu\n"
		   "in_journal_bitmap: \t%12lu\n"
		   "in_journal_reusable: \t%12lu\n"
		   "lock_journal: \t%12lu\n"
		   "lock_journal_wait: \t%12lu\n"
		   "journal_begin: \t%12lu\n"
		   "journal_relock_writers: \t%12lu\n"
		   "journal_relock_wcount: \t%12lu\n"
		   "mark_dirty: \t%12lu\n"
		   "mark_dirty_already: \t%12lu\n"
		   "mark_dirty_notjournal: \t%12lu\n"
		   "restore_prepared: \t%12lu\n"
		   "prepare: \t%12lu\n"
		   "prepare_retry: \t%12lu\n",
		   DJP(jp_journal_1st_block),
		   bdevname(SB_JOURNAL(sb)->j_dev_bd, b),
		   DJP(jp_journal_dev),
		   DJP(jp_journal_size),
		   DJP(jp_journal_trans_max),
		   DJP(jp_journal_magic),
		   DJP(jp_journal_max_batch),
		   SB_JOURNAL(sb)->j_max_commit_age,
		   DJP(jp_journal_max_trans_age),
		   JF(j_1st_reserved_block),
		   JF(j_state),
		   JF(j_trans_id),
		   JF(j_mount_id),
		   JF(j_start),
		   JF(j_len),
		   JF(j_len_alloc),
		   atomic_read(&r->s_journal->j_wcount),
		   JF(j_bcount),
		   JF(j_first_unflushed_offset),
		   JF(j_last_flush_trans_id),
		   JF(j_trans_start_time),
		   JF(j_list_bitmap_index),
		   JF(j_must_wait),
		   JF(j_next_full_flush),
		   JF(j_next_async_flush),
		   JF(j_cnode_used),
		   JF(j_cnode_free),
		   SFPJ(in_journal),
		   SFPJ(in_journal_bitmap),
		   SFPJ(in_journal_reusable),
		   SFPJ(lock_journal),
		   SFPJ(lock_journal_wait),
		   SFPJ(journal_being),
		   SFPJ(journal_relock_writers),
		   SFPJ(journal_relock_wcount),
		   SFPJ(mark_dirty),
		   SFPJ(mark_dirty_already),
		   SFPJ(mark_dirty_notjournal),
		   SFPJ(restore_prepared), SFPJ(prepare), SFPJ(prepare_retry)
	    );
	return 0;
}