Commit c0f04d88e46d ("bcache: Fix flushes in writeback mode") was fixing a reported data corruption bug, but it seems some last minute refactoring or rebasing introduced a null pointer deref.
Unified · Split
| @@ -996,6 +996,7 @@ static void request_write(struct cached_dev *dc, struct search *s) · 995 unmodified lines | ||
| 996 | 996 | closure_bio_submit(bio, cl, s->d); |
| 997 | 997 | } else { |
| 998 | 998 | bch_writeback_add(dc); |
| 999 | + s->op.cache_bio = bio; | |
| 999 | 1000 | |
| 1000 | 1001 | if (bio->bi_rw & REQ_FLUSH) { |
| 1001 | 1002 | /* Also need to send a flush to the backing device */ |
| @@ -1008,8 +1009,6 @@ static void request_write(struct cached_dev *dc, struct search *s) · 6 unmodified lines | ||
| 1008 | 1009 | flush->bi_private = cl; |
| 1009 | 1010 | |
| 1010 | 1011 | closure_bio_submit(flush, cl, s->d); |
| 1011 | − } else { | |
| 1012 | − s->op.cache_bio = bio; | |
| 1013 | 1012 | } |
| 1014 | 1013 | } |
| 1015 | 1014 | out: |