drbd: Fix postponed requests
A postponed request might has RQ_IN_ACT_LOG already set, but is POSTPONED before it gets something in the RQ_LOCAL_MASK set. Up to now this caused a left-over active extent. Fix that by only testing for the RQ_IN_ACT_LOG bit in drbd_req_destroy() Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
parent
19fffd7b03
commit
76590cd1fc
drivers/block/drbd
|
@ -141,10 +141,9 @@ void drbd_req_destroy(struct kref *kref)
|
|||
* but after the extent has been dropped from the al,
|
||||
* we would forget to resync the corresponding extent.
|
||||
*/
|
||||
if (s & RQ_LOCAL_MASK) {
|
||||
if (s & RQ_IN_ACT_LOG) {
|
||||
if (get_ldev_if_state(mdev, D_FAILED)) {
|
||||
if (s & RQ_IN_ACT_LOG)
|
||||
drbd_al_complete_io(mdev, &req->i);
|
||||
drbd_al_complete_io(mdev, &req->i);
|
||||
put_ldev(mdev);
|
||||
} else if (__ratelimit(&drbd_ratelimit_state)) {
|
||||
dev_warn(DEV, "Should have called drbd_al_complete_io(, %llu, %u), "
|
||||
|
|
Loading…
Reference in New Issue