mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
nilfs2: fix issue with counting number of bio requests for BIO_EOPNOTSUPP error detection
Fix the issue with improper counting number of flying bio requests for
BIO_EOPNOTSUPP error detection case.
The sb_nbio must be incremented exactly the same number of times as
complete() function was called (or will be called) because
nilfs_segbuf_wait() will call wail_for_completion() for the number of
times set to sb_nbio:
do {
wait_for_completion(&segbuf->sb_bio_event);
} while (--segbuf->sb_nbio > 0);
Two functions complete() and wait_for_completion() must be called the
same number of times for the same sb_bio_event. Otherwise,
wait_for_completion() will hang or leak.
Signed-off-by: Vyacheslav Dubeyko <[email protected]>
Cc: Dan Carpenter <[email protected]>
Acked-by: Ryusuke Konishi <[email protected]>
Tested-by: Ryusuke Konishi <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
2df37a19c6
commit
4bf93b50fd
1 changed files with 1 additions and 1 deletions
|
|
@ -376,12 +376,12 @@ static int nilfs_segbuf_submit_bio(struct nilfs_segment_buffer *segbuf,
|
|||
bio->bi_private = segbuf;
|
||||
bio_get(bio);
|
||||
submit_bio(mode, bio);
|
||||
segbuf->sb_nbio++;
|
||||
if (bio_flagged(bio, BIO_EOPNOTSUPP)) {
|
||||
bio_put(bio);
|
||||
err = -EOPNOTSUPP;
|
||||
goto failed;
|
||||
}
|
||||
segbuf->sb_nbio++;
|
||||
bio_put(bio);
|
||||
|
||||
wi->bio = NULL;
|
||||
|
|
|
|||
Loading…
Reference in a new issue