diff options
Diffstat (limited to 'block')
-rw-r--r-- | block/bsg.c | 4 | ||||
-rw-r--r-- | block/fops.c | 4 | ||||
-rw-r--r-- | block/partitions/check.h | 4 | ||||
-rw-r--r-- | block/partitions/core.c | 20 |
4 files changed, 13 insertions, 19 deletions
diff --git a/block/bsg.c b/block/bsg.c index 882f56bff14f..2ab1351eb082 100644 --- a/block/bsg.c +++ b/block/bsg.c @@ -169,7 +169,7 @@ static void bsg_device_release(struct device *dev) { struct bsg_device *bd = container_of(dev, struct bsg_device, device); - ida_simple_remove(&bsg_minor_ida, MINOR(bd->device.devt)); + ida_free(&bsg_minor_ida, MINOR(bd->device.devt)); kfree(bd); } @@ -196,7 +196,7 @@ struct bsg_device *bsg_register_queue(struct request_queue *q, bd->queue = q; bd->sg_io_fn = sg_io_fn; - ret = ida_simple_get(&bsg_minor_ida, 0, BSG_MAX_DEVS, GFP_KERNEL); + ret = ida_alloc_max(&bsg_minor_ida, BSG_MAX_DEVS - 1, GFP_KERNEL); if (ret < 0) { if (ret == -ENOSPC) dev_err(parent, "bsg: too many bsg devices\n"); diff --git a/block/fops.c b/block/fops.c index 29066ac5a2fa..a564cd81340c 100644 --- a/block/fops.c +++ b/block/fops.c @@ -37,7 +37,7 @@ static blk_opf_t dio_bio_write_op(struct kiocb *iocb) blk_opf_t opf = REQ_OP_WRITE | REQ_SYNC | REQ_IDLE; /* avoid the need for a I/O completion work item */ - if (iocb->ki_flags & IOCB_DSYNC) + if (iocb_is_dsync(iocb)) opf |= REQ_FUA; return opf; } @@ -421,7 +421,7 @@ const struct address_space_operations def_blk_aops = { .write_end = blkdev_write_end, .writepages = blkdev_writepages, .direct_IO = blkdev_direct_IO, - .migratepage = buffer_migrate_page_norefs, + .migrate_folio = buffer_migrate_folio_norefs, .is_dirty_writeback = buffer_check_dirty_writeback, }; diff --git a/block/partitions/check.h b/block/partitions/check.h index 4ffa2359b1a3..8d70a880c372 100644 --- a/block/partitions/check.h +++ b/block/partitions/check.h @@ -24,13 +24,13 @@ struct parsed_partitions { }; typedef struct { - struct page *v; + struct folio *v; } Sector; void *read_part_sector(struct parsed_partitions *state, sector_t n, Sector *p); static inline void put_dev_sector(Sector p) { - put_page(p.v); + folio_put(p.v); } static inline void diff --git a/block/partitions/core.c b/block/partitions/core.c index 1a45b1dd6491..fc1d70384825 100644 --- a/block/partitions/core.c +++ b/block/partitions/core.c @@ -704,25 +704,19 @@ EXPORT_SYMBOL_GPL(bdev_disk_changed); void *read_part_sector(struct parsed_partitions *state, sector_t n, Sector *p) { struct address_space *mapping = state->disk->part0->bd_inode->i_mapping; - struct page *page; + struct folio *folio; if (n >= get_capacity(state->disk)) { state->access_beyond_eod = true; - return NULL; + goto out; } - page = read_mapping_page(mapping, - (pgoff_t)(n >> (PAGE_SHIFT - 9)), NULL); - if (IS_ERR(page)) + folio = read_mapping_folio(mapping, n >> PAGE_SECTORS_SHIFT, NULL); + if (IS_ERR(folio)) goto out; - if (PageError(page)) - goto out_put_page; - - p->v = page; - return (unsigned char *)page_address(page) + - ((n & ((1 << (PAGE_SHIFT - 9)) - 1)) << SECTOR_SHIFT); -out_put_page: - put_page(page); + + p->v = folio; + return folio_address(folio) + offset_in_folio(folio, n * SECTOR_SIZE); out: p->v = NULL; return NULL; |