hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/arch/m68k/emu/nfblock.c
....@@ -59,9 +59,9 @@
5959 struct gendisk *disk;
6060 };
6161
62
-static blk_qc_t nfhd_make_request(struct request_queue *queue, struct bio *bio)
62
+static blk_qc_t nfhd_submit_bio(struct bio *bio)
6363 {
64
- struct nfhd_device *dev = queue->queuedata;
64
+ struct nfhd_device *dev = bio->bi_disk->private_data;
6565 struct bio_vec bvec;
6666 struct bvec_iter iter;
6767 int dir, len, shift;
....@@ -73,7 +73,7 @@
7373 len = bvec.bv_len;
7474 len >>= 9;
7575 nfhd_read_write(dev->id, 0, dir, sec >> shift, len >> shift,
76
- bvec_to_phys(&bvec));
76
+ page_to_phys(bvec.bv_page) + bvec.bv_offset);
7777 sec += len;
7878 }
7979 bio_endio(bio);
....@@ -93,6 +93,7 @@
9393
9494 static const struct block_device_operations nfhd_ops = {
9595 .owner = THIS_MODULE,
96
+ .submit_bio = nfhd_submit_bio,
9697 .getgeo = nfhd_getgeo,
9798 };
9899
....@@ -118,12 +119,10 @@
118119 dev->bsize = bsize;
119120 dev->bshift = ffs(bsize) - 10;
120121
121
- dev->queue = blk_alloc_queue(GFP_KERNEL);
122
+ dev->queue = blk_alloc_queue(NUMA_NO_NODE);
122123 if (dev->queue == NULL)
123124 goto free_dev;
124125
125
- dev->queue->queuedata = dev;
126
- blk_queue_make_request(dev->queue, nfhd_make_request);
127126 blk_queue_logical_block_size(dev->queue, bsize);
128127
129128 dev->disk = alloc_disk(16);
....@@ -155,18 +154,22 @@
155154 static int __init nfhd_init(void)
156155 {
157156 u32 blocks, bsize;
157
+ int ret;
158158 int i;
159159
160160 nfhd_id = nf_get_id("XHDI");
161161 if (!nfhd_id)
162162 return -ENODEV;
163163
164
- major_num = register_blkdev(major_num, "nfhd");
165
- if (major_num <= 0) {
164
+ ret = register_blkdev(major_num, "nfhd");
165
+ if (ret < 0) {
166166 pr_warn("nfhd: unable to get major number\n");
167
- return major_num;
167
+ return ret;
168168 }
169169
170
+ if (!major_num)
171
+ major_num = ret;
172
+
170173 for (i = NFHD_DEV_OFFSET; i < 24; i++) {
171174 if (nfhd_get_capacity(i, 0, &blocks, &bsize))
172175 continue;