Commit d1170ce5 authored by Kent Overstreet's avatar Kent Overstreet Committed by Kent Overstreet

bcachefs: allocate sb_read_scratch with __get_free_page

kmalloc allocations aren't guranteed alignment for io
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 478259b7
...@@ -652,7 +652,7 @@ static void read_back_super(struct bch_fs *c, struct bch_dev *ca) ...@@ -652,7 +652,7 @@ static void read_back_super(struct bch_fs *c, struct bch_dev *ca)
bio_reset(bio, ca->disk_sb.bdev, REQ_OP_READ|REQ_SYNC|REQ_META); bio_reset(bio, ca->disk_sb.bdev, REQ_OP_READ|REQ_SYNC|REQ_META);
bio->bi_iter.bi_sector = le64_to_cpu(sb->layout.sb_offset[0]); bio->bi_iter.bi_sector = le64_to_cpu(sb->layout.sb_offset[0]);
bio->bi_iter.bi_size = 4096; bio->bi_iter.bi_size = PAGE_SIZE;
bio->bi_end_io = write_super_endio; bio->bi_end_io = write_super_endio;
bio->bi_private = ca; bio->bi_private = ca;
bch2_bio_map(bio, ca->sb_read_scratch); bch2_bio_map(bio, ca->sb_read_scratch);
......
...@@ -919,7 +919,7 @@ static void bch2_dev_free(struct bch_dev *ca) ...@@ -919,7 +919,7 @@ static void bch2_dev_free(struct bch_dev *ca)
free_percpu(ca->io_done); free_percpu(ca->io_done);
bioset_exit(&ca->replica_set); bioset_exit(&ca->replica_set);
bch2_dev_buckets_free(ca); bch2_dev_buckets_free(ca);
kfree(ca->sb_read_scratch); free_page((unsigned long) ca->sb_read_scratch);
bch2_time_stats_exit(&ca->io_latency[WRITE]); bch2_time_stats_exit(&ca->io_latency[WRITE]);
bch2_time_stats_exit(&ca->io_latency[READ]); bch2_time_stats_exit(&ca->io_latency[READ]);
...@@ -1030,7 +1030,7 @@ static struct bch_dev *__bch2_dev_alloc(struct bch_fs *c, ...@@ -1030,7 +1030,7 @@ static struct bch_dev *__bch2_dev_alloc(struct bch_fs *c,
0, GFP_KERNEL) || 0, GFP_KERNEL) ||
percpu_ref_init(&ca->io_ref, bch2_dev_io_ref_complete, percpu_ref_init(&ca->io_ref, bch2_dev_io_ref_complete,
PERCPU_REF_INIT_DEAD, GFP_KERNEL) || PERCPU_REF_INIT_DEAD, GFP_KERNEL) ||
!(ca->sb_read_scratch = kmalloc(4096, GFP_KERNEL)) || !(ca->sb_read_scratch = (void *) __get_free_page(GFP_KERNEL)) ||
bch2_dev_buckets_alloc(c, ca) || bch2_dev_buckets_alloc(c, ca) ||
bioset_init(&ca->replica_set, 4, bioset_init(&ca->replica_set, 4,
offsetof(struct bch_write_bio, bio), 0) || offsetof(struct bch_write_bio, bio), 0) ||
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment