[Bugme-janitors] [Bug 24012] Commit g18733b0 hangs my LVM+raid10 system

bugzilla-daemon at bugzilla.kernel.org bugzilla-daemon at bugzilla.kernel.org
Tue Nov 30 18:08:49 PST 2010


https://bugzilla.kernel.org/show_bug.cgi?id=24012





--- Comment #11 from Neil Brown <neilb at suse.de>  2010-12-01 02:08:46 ---

A fresh day and a fresh look didn't reveal anything...  well actually it
did show my that there is a chance of a mempool running dry which I'll have
to try to fix, but I'm sure that isn't affecting you.

Could you try this patch and collect the output?  Hopefully it will
provide some visibility into what is going wrong.

thanks,
NeilBrown



diff --git a/drivers/md/md.c b/drivers/md/md.c
index 84c46a1..8ba9bc9 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -363,9 +363,10 @@ static void md_end_flush(struct bio *bio, int err)
     mddev_t *mddev = rdev->mddev;

     rdev_dec_pending(rdev, mddev);
-
+    printk("End flush %p\n", bio);
     if (atomic_dec_and_test(&mddev->flush_pending)) {
         /* The pre-request flush has finished */
+        printk("last flush done\n");
         queue_work(md_wq, &mddev->flush_work);
     }
     bio_put(bio);
@@ -392,6 +393,7 @@ static void submit_flushes(mddev_t *mddev)
             bi->bi_private = rdev;
             bi->bi_bdev = rdev->bdev;
             atomic_inc(&mddev->flush_pending);
+            printk("Submit flush %p\n", bi);
             submit_bio(WRITE_FLUSH, bi);
             rcu_read_lock();
             rdev_dec_pending(rdev, mddev);
@@ -415,6 +417,7 @@ static void md_submit_flush_data(struct work_struct *ws)
             generic_make_request(bio);
     }
     if (atomic_dec_and_test(&mddev->flush_pending)) {
+        printk("Flush %p complete\n", mddev->flush_bio);
         mddev->flush_bio = NULL;
         wake_up(&mddev->sb_wait);
     }
@@ -422,6 +425,7 @@ static void md_submit_flush_data(struct work_struct *ws)

 void md_flush_request(mddev_t *mddev, struct bio *bio)
 {
+    printk("Want flush %p\n", bio);
     spin_lock_irq(&mddev->write_lock);
     wait_event_lock_irq(mddev->sb_wait,
                 !mddev->flush_bio,
@@ -432,6 +436,7 @@ void md_flush_request(mddev_t *mddev, struct bio *bio)
     atomic_set(&mddev->flush_pending, 1);
     INIT_WORK(&mddev->flush_work, md_submit_flush_data);

+    printk("flushing %p\n", bio);
     submit_flushes(mddev);

     if (atomic_dec_and_test(&mddev->flush_pending))

-- 
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.


More information about the Bugme-janitors mailing list