Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 135535 Details for
Bug 198215
gentoo-sources-2.6.22-r9 md hangs
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
clearing of biofill operations patch
fix-clearing-of-biofill-operations.patch (text/plain), 5.64 KB, created by
Mike Pagano
on 2007-11-09 00:11:59 UTC
(
hide
)
Description:
clearing of biofill operations patch
Filename:
MIME Type:
Creator:
Mike Pagano
Created:
2007-11-09 00:11:59 UTC
Size:
5.64 KB
patch
obsolete
>e3f847e49e3787eca91bced31f8fd328d50496 > drivers/md/raid5.c | 17 ++++++++++++++--- > 1 files changed, 14 insertions(+), 3 deletions(-) > >diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c >index 8ee181a..80a67d7 100644 >--- a/drivers/md/raid5.c >+++ b/drivers/md/raid5.c >@@ -376,7 +376,12 @@ static unsigned long get_stripe_work(struct stripe_head *sh) > ack++; > > sh->ops.count -= ack; >- BUG_ON(sh->ops.count < 0); >+ if (unlikely(sh->ops.count < 0)) { >+ printk(KERN_ERR "pending: %#lx ops.pending: %#lx ops.ack: %#lx " >+ "ops.complete: %#lx\n", pending, sh->ops.pending, >+ sh->ops.ack, sh->ops.complete); >+ BUG(); >+ } > > return pending; > } >@@ -550,8 +555,7 @@ static void ops_complete_biofill(void *stripe_head_ref) > } > } > } >- clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack); >- clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending); >+ set_bit(STRIPE_OP_BIOFILL, &sh->ops.complete); > > return_io(return_bi); > >@@ -2893,6 +2897,13 @@ static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page) > s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state); > /* Now to look around and see what can be done */ > >+ /* clean-up completed biofill operations */ >+ if (test_bit(STRIPE_OP_BIOFILL, &sh->ops.complete)) { >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending); >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack); >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.complete); >+ } >+ > rcu_read_lock(); > for (i=disks; i--; ) { > mdk_rdev_t *rdev;e3f847e49e3787eca91bced31f8fd328d50496 > drivers/md/raid5.c | 17 ++++++++++++++--- > 1 files changed, 14 insertions(+), 3 deletions(-) > >diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c >index 8ee181a..80a67d7 100644 >--- a/drivers/md/raid5.c >+++ b/drivers/md/raid5.c >@@ -376,7 +376,12 @@ static unsigned long get_stripe_work(struct stripe_head *sh) > ack++; > > sh->ops.count -= ack; >- BUG_ON(sh->ops.count < 0); >+ if (unlikely(sh->ops.count < 0)) { >+ printk(KERN_ERR "pending: %#lx ops.pending: %#lx ops.ack: %#lx " >+ "ops.complete: %#lx\n", pending, sh->ops.pending, >+ sh->ops.ack, sh->ops.complete); >+ BUG(); >+ } > > return pending; > } >@@ -550,8 +555,7 @@ static void ops_complete_biofill(void *stripe_head_ref) > } > } > } >- clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack); >- clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending); >+ set_bit(STRIPE_OP_BIOFILL, &sh->ops.complete); > > return_io(return_bi); > >@@ -2893,6 +2897,13 @@ static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page) > s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state); > /* Now to look around and see what can be done */ > >+ /* clean-up completed biofill operations */ >+ if (test_bit(STRIPE_OP_BIOFILL, &sh->ops.complete)) { >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending); >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack); >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.complete); >+ } >+ > rcu_read_lock(); > for (i=disks; i--; ) { > mdk_rdev_t *rdev;e3f847e49e3787eca91bced31f8fd328d50496 > drivers/md/raid5.c | 17 ++++++++++++++--- > 1 files changed, 14 insertions(+), 3 deletions(-) > >diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c >index 8ee181a..80a67d7 100644 >--- a/drivers/md/raid5.c >+++ b/drivers/md/raid5.c >@@ -376,7 +376,12 @@ static unsigned long get_stripe_work(struct stripe_head *sh) > ack++; > > sh->ops.count -= ack; >- BUG_ON(sh->ops.count < 0); >+ if (unlikely(sh->ops.count < 0)) { >+ printk(KERN_ERR "pending: %#lx ops.pending: %#lx ops.ack: %#lx " >+ "ops.complete: %#lx\n", pending, sh->ops.pending, >+ sh->ops.ack, sh->ops.complete); >+ BUG(); >+ } > > return pending; > } >@@ -550,8 +555,7 @@ static void ops_complete_biofill(void *stripe_head_ref) > } > } > } >- clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack); >- clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending); >+ set_bit(STRIPE_OP_BIOFILL, &sh->ops.complete); > > return_io(return_bi); > >@@ -2893,6 +2897,13 @@ static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page) > s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state); > /* Now to look around and see what can be done */ > >+ /* clean-up completed biofill operations */ >+ if (test_bit(STRIPE_OP_BIOFILL, &sh->ops.complete)) { >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending); >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack); >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.complete); >+ } >+ > rcu_read_lock(); > for (i=disks; i--; ) { > mdk_rdev_t *rdev;e3f847e49e3787eca91bced31f8fd328d50496 > drivers/md/raid5.c | 17 ++++++++++++++--- > 1 files changed, 14 insertions(+), 3 deletions(-) > >diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c >index 8ee181a..80a67d7 100644 >--- a/drivers/md/raid5.c >+++ b/drivers/md/raid5.c >@@ -376,7 +376,12 @@ static unsigned long get_stripe_work(struct stripe_head *sh) > ack++; > > sh->ops.count -= ack; >- BUG_ON(sh->ops.count < 0); >+ if (unlikely(sh->ops.count < 0)) { >+ printk(KERN_ERR "pending: %#lx ops.pending: %#lx ops.ack: %#lx " >+ "ops.complete: %#lx\n", pending, sh->ops.pending, >+ sh->ops.ack, sh->ops.complete); >+ BUG(); >+ } > > return pending; > } >@@ -550,8 +555,7 @@ static void ops_complete_biofill(void *stripe_head_ref) > } > } > } >- clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack); >- clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending); >+ set_bit(STRIPE_OP_BIOFILL, &sh->ops.complete); > > return_io(return_bi); > >@@ -2893,6 +2897,13 @@ static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page) > s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state); > /* Now to look around and see what can be done */ > >+ /* clean-up completed biofill operations */ >+ if (test_bit(STRIPE_OP_BIOFILL, &sh->ops.complete)) { >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending); >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack); >+ clear_bit(STRIPE_OP_BIOFILL, &sh->ops.complete); >+ } >+ > rcu_read_lock(); > for (i=disks; i--; ) { > mdk_rdev_t *rdev;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 198215
:
135286
|
135287
|
135373
|
135375
| 135535 |
137635
|
141735