Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 198215 | Differences between
and this patch

Collapse All | Expand All

(-)a/drivers/md/raid5.c (-3 / +14 lines)
Lines 376-382 static unsigned long get_stripe_work(struct stripe_head *sh) Link Here
376
		ack++;
376
		ack++;
377
377
378
	sh->ops.count -= ack;
378
	sh->ops.count -= ack;
379
	BUG_ON(sh->ops.count < 0);
379
	if (unlikely(sh->ops.count < 0)) {
380
		printk(KERN_ERR "pending: %#lx ops.pending: %#lx ops.ack: %#lx "
381
			"ops.complete: %#lx\n", pending, sh->ops.pending,
382
			sh->ops.ack, sh->ops.complete);
383
		BUG();
384
	}
380
385
381
	return pending;
386
	return pending;
382
}
387
}
Lines 550-557 static void ops_complete_biofill(void *stripe_head_ref) Link Here
550
			}
555
			}
551
		}
556
		}
552
	}
557
	}
553
	clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack);
558
	set_bit(STRIPE_OP_BIOFILL, &sh->ops.complete);
554
	clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending);
555
559
556
	return_io(return_bi);
560
	return_io(return_bi);
557
561
Lines 2893-2898 static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page) Link Here
2893
	s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
2897
	s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
2894
	/* Now to look around and see what can be done */
2898
	/* Now to look around and see what can be done */
2895
2899
2900
	/* clean-up completed biofill operations */
2901
	if (test_bit(STRIPE_OP_BIOFILL, &sh->ops.complete)) {
2902
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending);
2903
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack);
2904
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.complete);
2905
	}
2906
2896
	rcu_read_lock();
2907
	rcu_read_lock();
2897
	for (i=disks; i--; ) {
2908
	for (i=disks; i--; ) {
2898
		mdk_rdev_t *rdev;e3f847e49e3787eca91bced31f8fd328d50496
2909
		mdk_rdev_t *rdev;e3f847e49e3787eca91bced31f8fd328d50496
2899
drivers/md/raid5.c |   17 ++++++++++++++---
2910
drivers/md/raid5.c |   17 ++++++++++++++---
2900
1 files changed, 14 insertions(+), 3 deletions(-)
2911
1 files changed, 14 insertions(+), 3 deletions(-)
(-)a/drivers/md/raid5.c (-3 / +14 lines)
Lines 376-382 static unsigned long get_stripe_work(struct stripe_head *sh) Link Here
376
		ack++;
376
		ack++;
377
377
378
	sh->ops.count -= ack;
378
	sh->ops.count -= ack;
379
	BUG_ON(sh->ops.count < 0);
379
	if (unlikely(sh->ops.count < 0)) {
380
		printk(KERN_ERR "pending: %#lx ops.pending: %#lx ops.ack: %#lx "
381
			"ops.complete: %#lx\n", pending, sh->ops.pending,
382
			sh->ops.ack, sh->ops.complete);
383
		BUG();
384
	}
380
385
381
	return pending;
386
	return pending;
382
}
387
}
Lines 550-557 static void ops_complete_biofill(void *stripe_head_ref) Link Here
550
			}
555
			}
551
		}
556
		}
552
	}
557
	}
553
	clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack);
558
	set_bit(STRIPE_OP_BIOFILL, &sh->ops.complete);
554
	clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending);
555
559
556
	return_io(return_bi);
560
	return_io(return_bi);
557
561
Lines 2893-2898 static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page) Link Here
2893
	s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
2897
	s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
2894
	/* Now to look around and see what can be done */
2898
	/* Now to look around and see what can be done */
2895
2899
2900
	/* clean-up completed biofill operations */
2901
	if (test_bit(STRIPE_OP_BIOFILL, &sh->ops.complete)) {
2902
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending);
2903
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack);
2904
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.complete);
2905
	}
2906
2896
	rcu_read_lock();
2907
	rcu_read_lock();
2897
	for (i=disks; i--; ) {
2908
	for (i=disks; i--; ) {
2898
		mdk_rdev_t *rdev;e3f847e49e3787eca91bced31f8fd328d50496
2909
		mdk_rdev_t *rdev;e3f847e49e3787eca91bced31f8fd328d50496
2899
drivers/md/raid5.c |   17 ++++++++++++++---
2910
drivers/md/raid5.c |   17 ++++++++++++++---
2900
1 files changed, 14 insertions(+), 3 deletions(-)
2911
1 files changed, 14 insertions(+), 3 deletions(-)
(-)a/drivers/md/raid5.c (-3 / +14 lines)
Lines 376-382 static unsigned long get_stripe_work(struct stripe_head *sh) Link Here
376
		ack++;
376
		ack++;
377
377
378
	sh->ops.count -= ack;
378
	sh->ops.count -= ack;
379
	BUG_ON(sh->ops.count < 0);
379
	if (unlikely(sh->ops.count < 0)) {
380
		printk(KERN_ERR "pending: %#lx ops.pending: %#lx ops.ack: %#lx "
381
			"ops.complete: %#lx\n", pending, sh->ops.pending,
382
			sh->ops.ack, sh->ops.complete);
383
		BUG();
384
	}
380
385
381
	return pending;
386
	return pending;
382
}
387
}
Lines 550-557 static void ops_complete_biofill(void *stripe_head_ref) Link Here
550
			}
555
			}
551
		}
556
		}
552
	}
557
	}
553
	clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack);
558
	set_bit(STRIPE_OP_BIOFILL, &sh->ops.complete);
554
	clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending);
555
559
556
	return_io(return_bi);
560
	return_io(return_bi);
557
561
Lines 2893-2898 static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page) Link Here
2893
	s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
2897
	s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
2894
	/* Now to look around and see what can be done */
2898
	/* Now to look around and see what can be done */
2895
2899
2900
	/* clean-up completed biofill operations */
2901
	if (test_bit(STRIPE_OP_BIOFILL, &sh->ops.complete)) {
2902
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending);
2903
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack);
2904
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.complete);
2905
	}
2906
2896
	rcu_read_lock();
2907
	rcu_read_lock();
2897
	for (i=disks; i--; ) {
2908
	for (i=disks; i--; ) {
2898
		mdk_rdev_t *rdev;e3f847e49e3787eca91bced31f8fd328d50496
2909
		mdk_rdev_t *rdev;e3f847e49e3787eca91bced31f8fd328d50496
2899
drivers/md/raid5.c |   17 ++++++++++++++---
2910
drivers/md/raid5.c |   17 ++++++++++++++---
2900
1 files changed, 14 insertions(+), 3 deletions(-)
2911
1 files changed, 14 insertions(+), 3 deletions(-)
(-)a/drivers/md/raid5.c (-3 / +14 lines)
Lines 376-382 static unsigned long get_stripe_work(struct stripe_head *sh) Link Here
376
		ack++;
376
		ack++;
377
377
378
	sh->ops.count -= ack;
378
	sh->ops.count -= ack;
379
	BUG_ON(sh->ops.count < 0);
379
	if (unlikely(sh->ops.count < 0)) {
380
		printk(KERN_ERR "pending: %#lx ops.pending: %#lx ops.ack: %#lx "
381
			"ops.complete: %#lx\n", pending, sh->ops.pending,
382
			sh->ops.ack, sh->ops.complete);
383
		BUG();
384
	}
380
385
381
	return pending;
386
	return pending;
382
}
387
}
Lines 550-557 static void ops_complete_biofill(void *stripe_head_ref) Link Here
550
			}
555
			}
551
		}
556
		}
552
	}
557
	}
553
	clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack);
558
	set_bit(STRIPE_OP_BIOFILL, &sh->ops.complete);
554
	clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending);
555
559
556
	return_io(return_bi);
560
	return_io(return_bi);
557
561
Lines 2893-2898 static void handle_stripe6(struct stripe_head *sh, struct page *tmp_page) Link Here
2893
	s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
2897
	s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
2894
	/* Now to look around and see what can be done */
2898
	/* Now to look around and see what can be done */
2895
2899
2900
	/* clean-up completed biofill operations */
2901
	if (test_bit(STRIPE_OP_BIOFILL, &sh->ops.complete)) {
2902
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.pending);
2903
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.ack);
2904
		clear_bit(STRIPE_OP_BIOFILL, &sh->ops.complete);
2905
	}
2906
2896
	rcu_read_lock();
2907
	rcu_read_lock();
2897
	for (i=disks; i--; ) {
2908
	for (i=disks; i--; ) {
2898
		mdk_rdev_t *rdev;
2909
		mdk_rdev_t *rdev;

Return to bug 198215