[DRBD-cvs] svn commit by phil - r2110 - trunk/drbd - Added some
(disabled) debug code, that could be usefull
drbd-cvs at lists.linbit.com
drbd-cvs at lists.linbit.com
Fri Mar 10 12:07:47 CET 2006
Author: phil
Date: 2006-03-10 12:07:46 +0100 (Fri, 10 Mar 2006)
New Revision: 2110
Modified:
trunk/drbd/drbd_actlog.c
trunk/drbd/drbd_main.c
trunk/drbd/drbd_proc.c
trunk/drbd/drbd_receiver.c
trunk/drbd/lru_cache.c
trunk/drbd/lru_cache.h
Log:
Added some (disabled) debug code, that could be usefull later on
as well.
Modified: trunk/drbd/drbd_actlog.c
===================================================================
--- trunk/drbd/drbd_actlog.c 2006-03-08 12:33:07 UTC (rev 2109)
+++ trunk/drbd/drbd_actlog.c 2006-03-10 11:07:46 UTC (rev 2110)
@@ -591,7 +591,7 @@
int cleared)
{
struct list_head *le, *tmp;
- struct bm_extent* ext;
+ struct bm_extent* ext, *ext1;
struct update_odbm_work * udw;
unsigned int enr;
@@ -640,25 +640,34 @@
}
list_for_each_safe(le,tmp,&mdev->resync->lru) {
- ext=(struct bm_extent *)list_entry(le,struct lc_element,list);
- if(ext->rs_left == 0) {
+ ext1=(struct bm_extent *)list_entry(le,struct lc_element,list);
+ if(ext1->rs_left == 0) {
+ if(ext1 == ext) ext=NULL;
udw=kmalloc(sizeof(*udw),GFP_ATOMIC);
if(!udw) {
WARN("Could not kmalloc an udw\n");
break;
}
- udw->enr = ext->lce.lc_number;
+ udw->enr = ext1->lce.lc_number;
udw->w.cb = w_update_odbm;
drbd_queue_work_front(mdev,&mdev->data.work,&udw->w);
- if (ext->flags != 0) {
+ if (ext1->flags != 0) {
WARN("deleting resync lce: %d[%u;%02lx]\n",
- ext->lce.lc_number, ext->rs_left,
- ext->flags);
- ext->flags = 0;
+ ext1->lce.lc_number, ext1->rs_left,
+ ext1->flags);
+ ext1->flags = 0;
}
- lc_del(mdev->resync,&ext->lce);
+ lc_del(mdev->resync,&ext1->lce);
}
}
+
+ if(ext) {
+ if (ext->rs_left == 0) {
+ ERR("BUG! missed lc_number:%u refcnt: %u\n",
+ ext->lce.lc_number,
+ ext->lce.refcnt);
+ }
+ }
}
/* clear the bit corresponding to the piece of storage in question:
Modified: trunk/drbd/drbd_main.c
===================================================================
--- trunk/drbd/drbd_main.c 2006-03-08 12:33:07 UTC (rev 2109)
+++ trunk/drbd/drbd_main.c 2006-03-10 11:07:46 UTC (rev 2110)
@@ -2180,6 +2180,9 @@
printk(KERN_ERR "AL_EXTENTS_PT = %d\n",AL_EXTENTS_PT);
printk(KERN_ERR "DRBD_MAX_SECTORS = %llu\n",DRBD_MAX_SECTORS);
printk(KERN_ERR "DRBD_MAX_SECTORS_FLEX = %llu\n",DRBD_MAX_SECTORS_FLEX);
+#define OOF(t,m) printk(KERN_ERR "offsetof("#t","#m") = %d\n", offsetof(t,m))
+ OOF(struct Drbd_Conf,bitmap);
+ //OOF(struct drbd_bitmap,bm_set);
return -EBUSY;
#endif
#ifdef __arch_um__
Modified: trunk/drbd/drbd_proc.c
===================================================================
--- trunk/drbd/drbd_proc.c 2006-03-08 12:33:07 UTC (rev 2109)
+++ trunk/drbd/drbd_proc.c 2006-03-10 11:07:46 UTC (rev 2110)
@@ -160,7 +160,18 @@
seq_printf(seq," K/sec\n");
}
+#if 0
+STATIC void resync_dump_detail(struct seq_file *seq, struct lc_element * e)
+{
+ struct bm_extent *bme = (struct bm_extent *)e;
+ seq_printf(seq,"%5d %s %s\n",bme->rs_left,
+ bme->flags & BME_NO_WRITES ? "NO_WRITES" : "---------",
+ bme->flags & BME_LOCKED ? "LOCKED" : "------"
+ );
+}
+#endif
+
STATIC int drbd_seq_show(struct seq_file *seq, void *v)
{
int i;
@@ -221,6 +232,13 @@
if(drbd_conf[i].act_log) {
lc_printf_stats(seq,drbd_conf[i].act_log);
}
+#if 0
+ if(drbd_conf[i].resync) {
+ lc_dump(drbd_conf[i].resync,seq,"rs_left",
+ resync_dump_detail);
+ }
+#endif
+
}
return 0;
Modified: trunk/drbd/drbd_receiver.c
===================================================================
--- trunk/drbd/drbd_receiver.c 2006-03-08 12:33:07 UTC (rev 2109)
+++ trunk/drbd/drbd_receiver.c 2006-03-10 11:07:46 UTC (rev 2110)
@@ -1076,8 +1076,6 @@
1);
dec_unacked(mdev);
}
- /* FIXME
- * explain why we need this SYNC_STARTED flag bit */
if (test_bit(SYNC_STARTED,&mdev->flags) )
drbd_set_in_sync(mdev,sector,drbd_ee_get_size(e));
} else {
@@ -1110,8 +1108,6 @@
if(mdev->net_conf->wire_protocol == DRBD_PROT_C) {
if(likely(drbd_bio_uptodate(e->private_bio))) {
ok &= drbd_send_ack(mdev,WriteAck,e);
- /* FIXME
- * explain why we need this SYNC_STARTED flag bit */
if (test_bit(SYNC_STARTED,&mdev->flags))
drbd_set_in_sync(mdev,sector,drbd_ee_get_size(e));
} else {
Modified: trunk/drbd/lru_cache.c
===================================================================
--- trunk/drbd/lru_cache.c 2006-03-08 12:33:07 UTC (rev 2109)
+++ trunk/drbd/lru_cache.c 2006-03-10 11:07:46 UTC (rev 2110)
@@ -313,3 +313,29 @@
list_move(&e->list, e->refcnt ? &lc->in_use : &lc->lru);
}
+#if 0
+/**
+ * lc_dump: Dump a complete LRU cache to seq in textual form.
+ */
+void lc_dump(struct lru_cache* lc, struct seq_file *seq, char* utext,
+ void (*detail) (struct seq_file *, struct lc_element *) )
+{
+ unsigned int nr_elements = lc->nr_elements;
+ struct lc_element *e;
+ int i;
+
+ seq_printf(seq,"\tnn: lc_number refcnt %s\n ",utext);
+ for(i=0;i<nr_elements;i++) {
+ e = lc_entry(lc,i);
+ if( e->lc_number == LC_FREE ) {
+ seq_printf(seq,"\t%2d: FREE\n",i );
+ } else {
+ seq_printf(seq,"\t%2d: %4u %4u ", i,
+ e->lc_number,
+ e->refcnt );
+ detail(seq,e);
+ }
+ }
+}
+
+#endif
Modified: trunk/drbd/lru_cache.h
===================================================================
--- trunk/drbd/lru_cache.h 2006-03-08 12:33:07 UTC (rev 2109)
+++ trunk/drbd/lru_cache.h 2006-03-10 11:07:46 UTC (rev 2110)
@@ -110,6 +110,9 @@
struct seq_file;
extern size_t lc_printf_stats(struct seq_file *seq, struct lru_cache* lc);
+void lc_dump(struct lru_cache* lc, struct seq_file *seq, char* utext,
+ void (*detail) (struct seq_file *, struct lc_element *) );
+
/* This can be used to stop lc_get from changing the set of active elements.
* Note that the reference counts and order on the lru list may still change.
* returns true if we aquired the lock.
More information about the drbd-cvs
mailing list