Messages in this thread | | | Date | Mon, 8 Feb 2010 10:58:28 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH] obsolete config in kernel source (BUFFER_DEBUG) |
| |
On Mon, 8 Feb 2010 10:50:31 -0500 tytso@mit.edu wrote:
> I don't have an objection with removing this, but does anyone have the > latest version of akpm's buffer debugging patches?
My version is datestamped four years ago :( It normally forward-ports fairly easily.
> I *think* what happened is that akpm forward ported the removed buffer > debugging patches, or maybe rewrote it from scratch, but for whatever > reason they never made back into mainline. Maybe they were too ugly > to live in mainline, but they have been really handy on occasion.
I think Eric Sandeen might have a fresher version. Nowadays it should be done with the tracing infrastructure, I guess. Although that infrastructure may not be able to do this - the ext3 debug patch recorded an LRU array of the below structs within every buffer_head. The various BUFFER_TRACE macros would emit a new record into the tail of the target bh's b[] ring.
struct buffer_history { struct buffer_history_item { char *function; char *info; unsigned long b_state; unsigned b_list:3; unsigned b_jlist:4; unsigned pg_dirty:1; unsigned cpu:3; unsigned b_count:8; unsigned long b_blocknr; /* For src != dest */ #if defined(CONFIG_JBD) || defined(CONFIG_JBD_MODULE) unsigned b_jcount:4; unsigned b_jbd:1; unsigned b_transaction:1; unsigned b_next_transaction:1; unsigned b_cp_transaction:1; unsigned b_trans_is_running:1; unsigned b_trans_is_committing:1; void *b_frozen_data; void *b_committed_data; #endif } b[BUFFER_HISTORY_SIZE]; unsigned long b_history_head; /* Next place to write */ unsigned long b_history_tail; /* Oldest valid entry */ };
| |