[PATCH v2] erofs-utils: introduce the I/O manager
Gao Xiang
hsiangkao at linux.alibaba.com
Wed Jun 5 12:55:21 AEST 2024
On 2024/6/4 20:10, Hongzhen Luo wrote:
> Introduce the I/O manager to provide a more flexible way to specify
> the virtual storage.
>
> Signed-off-by: Hongzhen Luo <hongzhen at linux.alibaba.com>
> ---
> v2: Updated the handling of `.dev_close` being unimplemented in `erofs_dev_close` and so on.
> v1: https://lore.kernel.org/all/20240604093556.3883585-1-hongzhen@linux.alibaba.com/
I'm unable to apply this patch.
> ---
...
>
> +struct erofs_io_manager {
> + int (*dev_open)(struct erofs_sb_info *sbi, const char *devname);
int (*open)(...);
> + int (*dev_open_ro)(struct erofs_sb_info *sbi, const char *dev);
int (*open_ro)(...);
> + int (*blob_open_ro)(struct erofs_sb_info *sbi, const char *dev);
int (*blob_open_ro)(...);
> + int (*dev_read)(struct erofs_sb_info *sbi, int device_id,
> + void *buf, u64 offset, size_t len);
int (*read)(...);
> + int (*dev_write)(struct erofs_sb_info *sbi, const void *buf,
> + u64 offset, size_t len);
int (*write)(...);
> + int (*dev_fillzero)(struct erofs_sb_info *sbi, u64 offset,
> + size_t len, bool padding);
int (*fillzero)(...);
> + int (*dev_fsync)(struct erofs_sb_info *sbi);
int (*fsync)(...);
> + int (*dev_resize)(struct erofs_sb_info *sbi, erofs_blk_t nblocks);
int (*resize)(...);
> + void (*dev_close)(struct erofs_sb_info *sbi);
int (*close)(...);
> + void (*blob_closeall)(struct erofs_sb_info *sbi);
int (*blob_closeall)(...);
> + void *private_data;
What does this mean?
> +};
> +
> #ifdef __cplusplus
> }
> #endif
> diff --git a/lib/blobchunk.c b/lib/blobchunk.c
> index 9d102a4..22a366a 100644
> --- a/lib/blobchunk.c
> +++ b/lib/blobchunk.c
> @@ -195,7 +195,7 @@ int erofs_blob_write_chunk_indexes(struct erofs_inode *inode,
> 0 : extent_end - extent_start,
> first_extent, true);
>
> - return dev_write(inode->sbi, inode->chunkindexes, off, inode->extent_isize);
> + return erofs_dev_write(inode->sbi, inode->chunkindexes, off, inode->extent_isize);
> }
>
> int erofs_blob_mergechunks(struct erofs_inode *inode, unsigned int chunkbits,
> @@ -506,7 +506,7 @@ int erofs_mkfs_dump_blobs(struct erofs_sb_info *sbi)
> };
>
> memcpy(dis.tag, sbi->devs[i].tag, sizeof(dis.tag));
> - ret = dev_write(sbi, &dis, pos_out, sizeof(dis));
> + ret = erofs_dev_write(sbi, &dis, pos_out, sizeof(dis));
> if (ret)
> return ret;
> pos_out += sizeof(dis);
> diff --git a/lib/cache.c b/lib/cache.c
> index 0a88061..faf6d4b 100644
> --- a/lib/cache.c
> +++ b/lib/cache.c
> @@ -400,7 +400,7 @@ int erofs_bflush(struct erofs_buffer_block *bb)
>
> padding = blksiz - (p->buffers.off & (blksiz - 1));
> if (padding != blksiz)
> - dev_fillzero(&sbi, erofs_pos(&sbi, blkaddr) - padding,
> + erofs_dev_fillzero(&sbi, erofs_pos(&sbi, blkaddr) - padding,
> padding, true);
>
> if (p->type != DATA)
> diff --git a/lib/compress.c b/lib/compress.c
> index f783236..12368eb 100644
> --- a/lib/compress.c
> +++ b/lib/compress.c
> @@ -407,7 +407,7 @@ static int write_uncompressed_extent(struct z_erofs_compress_sctx *ctx,
> } else {
> erofs_dbg("Writing %u uncompressed data to block %u", count,
> ctx->blkaddr);
> - ret = blk_write(sbi, dst, ctx->blkaddr, 1);
> + ret = erofs_blk_write(sbi, dst, ctx->blkaddr, 1);
> if (ret)
> return ret;
> }
> @@ -659,7 +659,7 @@ frag_packing:
> erofs_dbg("Writing %u compressed data to %u of %u blocks",
> e->length, ctx->blkaddr, e->compressedblks);
>
> - ret = blk_write(sbi, dst - padding, ctx->blkaddr,
> + ret = erofs_blk_write(sbi, dst - padding, ctx->blkaddr,
> e->compressedblks);
> if (ret)
> return ret;
> @@ -1288,7 +1288,7 @@ int z_erofs_merge_segment(struct z_erofs_compress_ictx *ictx,
> /* skip write data but leave blkaddr for inline fallback */
> if (ei->e.inlined || !ei->e.compressedblks)
> continue;
> - ret2 = blk_write(sbi, sctx->membuf + blkoff * erofs_blksiz(sbi),
> + ret2 = erofs_blk_write(sbi, sctx->membuf + blkoff * erofs_blksiz(sbi),
> ei->e.blkaddr, ei->e.compressedblks);
> blkoff += ei->e.compressedblks;
> if (ret2) {
> @@ -1603,7 +1603,7 @@ static int z_erofs_build_compr_cfgs(struct erofs_sb_info *sbi,
> return PTR_ERR(bh);
> }
> erofs_mapbh(bh->block);
> - ret = dev_write(sbi, &lz4alg, erofs_btell(bh, false),
> + ret = erofs_dev_write(sbi, &lz4alg, erofs_btell(bh, false),
> sizeof(lz4alg));
> bh->op = &erofs_drop_directly_bhops;
> }
> @@ -1627,7 +1627,7 @@ static int z_erofs_build_compr_cfgs(struct erofs_sb_info *sbi,
> return PTR_ERR(bh);
> }
> erofs_mapbh(bh->block);
> - ret = dev_write(sbi, &lzmaalg, erofs_btell(bh, false),
> + ret = erofs_dev_write(sbi, &lzmaalg, erofs_btell(bh, false),
> sizeof(lzmaalg));
> bh->op = &erofs_drop_directly_bhops;
> }
> @@ -1651,7 +1651,7 @@ static int z_erofs_build_compr_cfgs(struct erofs_sb_info *sbi,
> return PTR_ERR(bh);
> }
> erofs_mapbh(bh->block);
> - ret = dev_write(sbi, &zalg, erofs_btell(bh, false),
> + ret = erofs_dev_write(sbi, &zalg, erofs_btell(bh, false),
> sizeof(zalg));
> bh->op = &erofs_drop_directly_bhops;
> }
> @@ -1674,7 +1674,7 @@ static int z_erofs_build_compr_cfgs(struct erofs_sb_info *sbi,
> return PTR_ERR(bh);
> }
> erofs_mapbh(bh->block);
> - ret = dev_write(sbi, &zalg, erofs_btell(bh, false),
> + ret = erofs_dev_write(sbi, &zalg, erofs_btell(bh, false),
> sizeof(zalg));
> bh->op = &erofs_drop_directly_bhops;
> }
> diff --git a/lib/data.c b/lib/data.c
> index a87053f..94b75e2 100644
> --- a/lib/data.c
> +++ b/lib/data.c
> @@ -95,7 +95,7 @@ int erofs_map_blocks(struct erofs_inode *inode,
> pos = roundup(erofs_iloc(vi) + vi->inode_isize +
> vi->xattr_isize, unit) + unit * chunknr;
>
> - err = blk_read(sbi, 0, buf, erofs_blknr(sbi, pos), 1);
> + err = erofs_blk_read(sbi, 0, buf, erofs_blknr(sbi, pos), 1);
> if (err < 0)
> return -EIO;
>
> @@ -176,7 +176,7 @@ int erofs_read_one_data(struct erofs_inode *inode, struct erofs_map_blocks *map,
> if (ret)
> return ret;
>
> - ret = dev_read(sbi, mdev.m_deviceid, buffer, mdev.m_pa + offset, len);
> + ret = erofs_dev_read(sbi, mdev.m_deviceid, buffer, mdev.m_pa + offset, len);
> if (ret < 0)
> return -EIO;
> return 0;
> @@ -266,7 +266,7 @@ int z_erofs_read_one_data(struct erofs_inode *inode,
> return ret;
> }
>
> - ret = dev_read(sbi, mdev.m_deviceid, raw, mdev.m_pa, map->m_plen);
> + ret = erofs_dev_read(sbi, mdev.m_deviceid, raw, mdev.m_pa, map->m_plen);
> if (ret < 0)
> return ret;
>
> @@ -417,7 +417,7 @@ static void *erofs_read_metadata_bdi(struct erofs_sb_info *sbi,
> u8 data[EROFS_MAX_BLOCK_SIZE];
>
> *offset = round_up(*offset, 4);
> - ret = blk_read(sbi, 0, data, erofs_blknr(sbi, *offset), 1);
> + ret = erofs_blk_read(sbi, 0, data, erofs_blknr(sbi, *offset), 1);
> if (ret)
> return ERR_PTR(ret);
> len = le16_to_cpu(*(__le16 *)&data[erofs_blkoff(sbi, *offset)]);
> @@ -433,7 +433,7 @@ static void *erofs_read_metadata_bdi(struct erofs_sb_info *sbi,
> for (i = 0; i < len; i += cnt) {
> cnt = min_t(int, erofs_blksiz(sbi) - erofs_blkoff(sbi, *offset),
> len - i);
> - ret = blk_read(sbi, 0, data, erofs_blknr(sbi, *offset), 1);
> + ret = erofs_blk_read(sbi, 0, data, erofs_blknr(sbi, *offset), 1);
> if (ret) {
> free(buffer);
> return ERR_PTR(ret);
> diff --git a/lib/inode.c b/lib/inode.c
> index bdeb355..1be9acc 100644
> --- a/lib/inode.c
> +++ b/lib/inode.c
> @@ -315,7 +315,7 @@ static int write_dirblock(struct erofs_sb_info *sbi,
> char buf[EROFS_MAX_BLOCK_SIZE];
>
> fill_dirblock(buf, erofs_blksiz(sbi), q, head, end);
> - return blk_write(sbi, buf, blkaddr, 1);
> + return erofs_blk_write(sbi, buf, blkaddr, 1);
> }
>
> erofs_nid_t erofs_lookupnid(struct erofs_inode *inode)
> @@ -413,7 +413,7 @@ int erofs_write_file_from_buffer(struct erofs_inode *inode, char *buf)
> return ret;
>
> if (nblocks)
> - blk_write(sbi, buf, inode->u.i_blkaddr, nblocks);
> + erofs_blk_write(sbi, buf, inode->u.i_blkaddr, nblocks);
> inode->idata_size = inode->i_size % erofs_blksiz(sbi);
> if (inode->idata_size) {
> inode->idata = malloc(inode->idata_size);
> @@ -456,7 +456,7 @@ static int write_uncompressed_file_from_fd(struct erofs_inode *inode, int fd)
> return -EAGAIN;
> }
>
> - ret = blk_write(sbi, buf, inode->u.i_blkaddr + i, 1);
> + ret = erofs_blk_write(sbi, buf, inode->u.i_blkaddr + i, 1);
> if (ret)
> return ret;
> }
> @@ -592,7 +592,7 @@ static int erofs_bh_flush_write_inode(struct erofs_buffer_head *bh)
> BUG_ON(1);
> }
>
> - ret = dev_write(sbi, &u, off, inode->inode_isize);
> + ret = erofs_dev_write(sbi, &u, off, inode->inode_isize);
> if (ret)
> return ret;
> off += inode->inode_isize;
> @@ -603,7 +603,7 @@ static int erofs_bh_flush_write_inode(struct erofs_buffer_head *bh)
> if (IS_ERR(xattrs))
> return PTR_ERR(xattrs);
>
> - ret = dev_write(sbi, xattrs, off, inode->xattr_isize);
> + ret = erofs_dev_write(sbi, xattrs, off, inode->xattr_isize);
> free(xattrs);
> if (ret)
> return ret;
> @@ -619,7 +619,7 @@ static int erofs_bh_flush_write_inode(struct erofs_buffer_head *bh)
> } else {
> /* write compression metadata */
> off = roundup(off, 8);
> - ret = dev_write(sbi, inode->compressmeta, off,
> + ret = erofs_dev_write(sbi, inode->compressmeta, off,
> inode->extent_isize);
> if (ret)
> return ret;
> @@ -741,7 +741,7 @@ static int erofs_bh_flush_write_inline(struct erofs_buffer_head *bh)
> const erofs_off_t off = erofs_btell(bh, false);
> int ret;
>
> - ret = dev_write(inode->sbi, inode->idata, off, inode->idata_size);
> + ret = erofs_dev_write(inode->sbi, inode->idata, off, inode->idata_size);
> if (ret)
> return ret;
>
> @@ -812,13 +812,13 @@ static int erofs_write_tail_end(struct erofs_inode *inode)
> /* pad 0'ed data for the other cases */
> zero_pos = pos + inode->idata_size;
> }
> - ret = dev_write(sbi, inode->idata, pos, inode->idata_size);
> + ret = erofs_dev_write(sbi, inode->idata, pos, inode->idata_size);
> if (ret)
> return ret;
>
> DBG_BUGON(inode->idata_size > erofs_blksiz(sbi));
> if (inode->idata_size < erofs_blksiz(sbi)) {
> - ret = dev_fillzero(sbi, zero_pos,
> + ret = erofs_dev_fillzero(sbi, zero_pos,
> erofs_blksiz(sbi) - inode->idata_size,
> false);
> if (ret)
> diff --git a/lib/io.c b/lib/io.c
> index bfae73a..6c579b0 100644
> --- a/lib/io.c
> +++ b/lib/io.c
> @@ -46,7 +46,7 @@ static int dev_get_blkdev_size(int fd, u64 *bytes)
> return -errno;
> }
>
> -void dev_close(struct erofs_sb_info *sbi)
> +static void builtin_dev_close(struct erofs_sb_info *sbi)
> {
> close(sbi->devfd);
> free(sbi->devname);
> @@ -55,7 +55,7 @@ void dev_close(struct erofs_sb_info *sbi)
> sbi->devsz = 0;
> }
>
> -int dev_open(struct erofs_sb_info *sbi, const char *dev)
> +static int builtin_dev_open(struct erofs_sb_info *sbi, const char *dev)
> {
> struct stat st;
> int fd, ret;
> @@ -138,7 +138,7 @@ repeat:
> return 0;
> }
>
> -void blob_closeall(struct erofs_sb_info *sbi)
> +static void builtin_blob_closeall(struct erofs_sb_info *sbi)
> {
> unsigned int i;
>
> @@ -147,7 +147,7 @@ void blob_closeall(struct erofs_sb_info *sbi)
> sbi->nblobs = 0;
> }
>
> -int blob_open_ro(struct erofs_sb_info *sbi, const char *dev)
> +static int builtin_blob_open_ro(struct erofs_sb_info *sbi, const char *dev)
> {
> int fd = open(dev, O_RDONLY | O_BINARY);
>
> @@ -163,7 +163,7 @@ int blob_open_ro(struct erofs_sb_info *sbi, const char *dev)
> }
>
> /* XXX: temporary soluation. Disk I/O implementation needs to be refactored. */
> -int dev_open_ro(struct erofs_sb_info *sbi, const char *dev)
> +static int builtin_dev_open_ro(struct erofs_sb_info *sbi, const char *dev)
> {
> int fd = open(dev, O_RDONLY | O_BINARY);
>
> @@ -182,7 +182,7 @@ int dev_open_ro(struct erofs_sb_info *sbi, const char *dev)
> return 0;
> }
>
> -int dev_write(struct erofs_sb_info *sbi, const void *buf, u64 offset, size_t len)
> +static int builtin_dev_write(struct erofs_sb_info *sbi, const void *buf, u64 offset, size_t len)
> {
> int ret;
>
> @@ -221,7 +221,7 @@ int dev_write(struct erofs_sb_info *sbi, const void *buf, u64 offset, size_t len
> return 0;
> }
>
> -int dev_fillzero(struct erofs_sb_info *sbi, u64 offset, size_t len, bool padding)
> +static int builtin_dev_fillzero(struct erofs_sb_info *sbi, u64 offset, size_t len, bool padding)
> {
> static const char zero[EROFS_MAX_BLOCK_SIZE] = {0};
> int ret;
> @@ -235,16 +235,16 @@ int dev_fillzero(struct erofs_sb_info *sbi, u64 offset, size_t len, bool padding
> return 0;
> #endif
> while (len > erofs_blksiz(sbi)) {
> - ret = dev_write(sbi, zero, offset, erofs_blksiz(sbi));
> + ret = erofs_dev_write(sbi, zero, offset, erofs_blksiz(sbi));
> if (ret)
> return ret;
> len -= erofs_blksiz(sbi);
> offset += erofs_blksiz(sbi);
> }
> - return dev_write(sbi, zero, offset, len);
> + return erofs_dev_write(sbi, zero, offset, len);
> }
>
> -int dev_fsync(struct erofs_sb_info *sbi)
> +static int builtin_dev_fsync(struct erofs_sb_info *sbi)
> {
> int ret;
>
> @@ -256,7 +256,7 @@ int dev_fsync(struct erofs_sb_info *sbi)
> return 0;
> }
>
> -int dev_resize(struct erofs_sb_info *sbi, erofs_blk_t blocks)
> +static int builtin_dev_resize(struct erofs_sb_info *sbi, erofs_blk_t blocks)
> {
> int ret;
> struct stat st;
> @@ -283,12 +283,12 @@ int dev_resize(struct erofs_sb_info *sbi, erofs_blk_t blocks)
> if (fallocate(sbi->devfd, 0, st.st_size, length) >= 0)
> return 0;
> #endif
> - return dev_fillzero(sbi, st.st_size - sbi->diskoffset,
> + return erofs_dev_fillzero(sbi, st.st_size - sbi->diskoffset,
> length, true);
> }
>
> -int dev_read(struct erofs_sb_info *sbi, int device_id,
> - void *buf, u64 offset, size_t len)
> +static int builtin_dev_read(struct erofs_sb_info *sbi, int device_id,
> + void *buf, u64 offset, size_t len)
> {
> int read_count, fd;
>
> @@ -430,3 +430,101 @@ out:
> #endif
> return __erofs_copy_file_range(fd_in, off_in, fd_out, off_out, length);
> }
> +
> +void erofs_blob_closeall(struct erofs_sb_info *sbi)
> +{
> + if (sbi->io_manager && !sbi->io_manager->blob_closeall)
> + return;
> +
> + if (sbi->io_manager)
> + sbi->io_manager->blob_closeall(sbi);
> + else
> + builtin_blob_closeall(sbi);
> +}
> +
> +int erofs_blob_open_ro(struct erofs_sb_info *sbi, const char *dev)
> +{
> + if (sbi->io_manager && !sbi->io_manager->blob_open_ro)
> + return -EOPNOTSUPP;
> +
> + return sbi->io_manager ? sbi->io_manager->blob_open_ro(sbi, dev) :
> + builtin_blob_open_ro(sbi, dev);
> +}
> +
> +int erofs_dev_open(struct erofs_sb_info *sbi, const char *devname)
> +{
> + if (sbi->io_manager && !sbi->io_manager->dev_open)
> + return -EOPNOTSUPP;
> +
> + return sbi->io_manager ? sbi->io_manager->dev_open(sbi, devname) :
> + builtin_dev_open(sbi, devname);
> +}
> +
> +int erofs_dev_open_ro(struct erofs_sb_info *sbi, const char *dev)
> +{
> + if (sbi->io_manager && !sbi->io_manager->dev_open_ro)
> + return -EOPNOTSUPP;
> +
> + return sbi->io_manager ? sbi->io_manager->dev_open_ro(sbi, dev) :
> + builtin_dev_open_ro(sbi, dev);
> +}
> +
> +void erofs_dev_close(struct erofs_sb_info *sbi)
> +{
> + if (sbi->io_manager && !sbi->io_manager->dev_close)
> + return;
> +
> + if (sbi->io_manager)
> + sbi->io_manager->dev_close(sbi);
> + else
> + builtin_dev_close(sbi);
> +}
> +
> +int erofs_dev_write(struct erofs_sb_info *sbi, const void *buf,
> + u64 offset, size_t len)
> +{
> + if (sbi->io_manager && !sbi->io_manager->dev_write)
> + return -EOPNOTSUPP;
> +
> + return sbi->io_manager ? sbi->io_manager->dev_write(sbi, buf, offset, len) :
> + builtin_dev_write(sbi, buf, offset, len);
> +}
> +
> +int erofs_dev_read(struct erofs_sb_info *sbi, int device_id,
> + void *buf, u64 offset, size_t len)
> +{
> + if (sbi->io_manager && !sbi->io_manager->dev_read)
> + return -EOPNOTSUPP;
> +
> + return sbi->io_manager ? sbi->io_manager->dev_read(sbi, device_id, buf, offset, len) :
> + builtin_dev_read(sbi, device_id, buf, offset, len);
> +}
> +
> +int erofs_dev_fillzero(struct erofs_sb_info *sbi, u64 offset,
> + size_t len, bool padding)
> +{
> + if (sbi->io_manager && !sbi->io_manager->dev_fillzero)
> + return -EOPNOTSUPP;
> +
> + if (sbi->io_manager && sbi->io_manager->dev_fillzero)
> + return sbi->io_manager->dev_fillzero(sbi, offset, len, padding);
> + return builtin_dev_fillzero(sbi, offset, len, padding);
> +}
> +
> +int erofs_dev_fsync(struct erofs_sb_info *sbi)
> +{
> + if (sbi->io_manager && !sbi->io_manager->dev_fsync)
> + return 0;
> +
> + return sbi->io_manager ? sbi->io_manager->dev_fsync(sbi) :
> + builtin_dev_fsync(sbi);
> +}
> +
> +int erofs_dev_resize(struct erofs_sb_info *sbi, erofs_blk_t nblocks)
> +{
> + if (sbi->io_manager && !sbi->io_manager->dev_resize)
> + return 0;
> +
> + return sbi->io_manager ? sbi->io_manager->dev_resize(sbi, nblocks) :
> + builtin_dev_resize(sbi, nblocks);
> +}
> diff --git a/lib/namei.c b/lib/namei.c
> index 294d7a3..bdc78c5 100644
> --- a/lib/namei.c
> +++ b/lib/namei.c
> @@ -34,7 +34,7 @@ int erofs_read_inode_from_disk(struct erofs_inode *vi)
> DBG_BUGON(!sbi);
> inode_loc = erofs_iloc(vi);
>
> - ret = dev_read(sbi, 0, buf, inode_loc, sizeof(*dic));
> + ret = erofs_dev_read(sbi, 0, buf, inode_loc, sizeof(*dic));
> if (ret < 0)
> return -EIO;
>
> @@ -51,7 +51,7 @@ int erofs_read_inode_from_disk(struct erofs_inode *vi)
> case EROFS_INODE_LAYOUT_EXTENDED:
> vi->inode_isize = sizeof(struct erofs_inode_extended);
>
> - ret = dev_read(sbi, 0, buf + sizeof(*dic),
> + ret = erofs_dev_read(sbi, 0, buf + sizeof(*dic),
> inode_loc + sizeof(*dic),
> sizeof(*die) - sizeof(*dic));
> if (ret < 0)
> diff --git a/lib/super.c b/lib/super.c
> index f952f7e..674ee1a 100644
> --- a/lib/super.c
> +++ b/lib/super.c
> @@ -56,7 +56,7 @@ static int erofs_init_devices(struct erofs_sb_info *sbi,
> struct erofs_deviceslot dis;
> int ret;
>
> - ret = dev_read(sbi, 0, &dis, pos, sizeof(dis));
> + ret = erofs_dev_read(sbi, 0, &dis, pos, sizeof(dis));
> if (ret < 0) {
> free(sbi->devs);
> sbi->devs = NULL;
> @@ -79,7 +79,7 @@ int erofs_read_superblock(struct erofs_sb_info *sbi)
> int ret;
>
> sbi->blkszbits = ilog2(EROFS_MAX_BLOCK_SIZE);
> - ret = blk_read(sbi, 0, data, 0, erofs_blknr(sbi, sizeof(data)));
> + ret = erofs_blk_read(sbi, 0, data, 0, erofs_blknr(sbi, sizeof(data)));
> if (ret < 0) {
> erofs_err("cannot read erofs superblock: %d", ret);
> return -EIO;
> diff --git a/lib/tar.c b/lib/tar.c
> index ac2484e..f12dac2 100644
> --- a/lib/tar.c
> +++ b/lib/tar.c
> @@ -1099,7 +1099,7 @@ int tarerofs_append_tree(struct erofs_inode *root, struct erofs_tarfile *tar)
> struct erofs_sb_info base = {};
> struct bitmap datablk;
>
> - ret = dev_open_ro(&base, tar->base);
> + ret = erofs_dev_open_ro(&base, tar->base);
> if (ret)
> return ret;
> base.dev = 0;
> @@ -1110,6 +1110,6 @@ int tarerofs_append_tree(struct erofs_inode *root, struct erofs_tarfile *tar)
>
> ret = tarerofs_alloc_data_block(root, &datablk);
> out:
> - dev_close(&base);
> + erofs_dev_close(&base);
> return ret;
> }
> diff --git a/lib/xattr.c b/lib/xattr.c
> index 427933f..e7417e1 100644
> --- a/lib/xattr.c
> +++ b/lib/xattr.c
> @@ -931,7 +931,7 @@ int erofs_build_shared_xattrs_from_path(struct erofs_sb_info *sbi, const char *p
> shared_xattrs_list = sorted_n[0];
> free(sorted_n);
> bh->op = &erofs_drop_directly_bhops;
> - ret = dev_write(sbi, buf, erofs_btell(bh, false), shared_xattrs_size);
> + ret = erofs_dev_write(sbi, buf, erofs_btell(bh, false), shared_xattrs_size);
> free(buf);
> erofs_bdrop(bh, false);
> out:
> @@ -1054,7 +1054,7 @@ static int init_inode_xattrs(struct erofs_inode *vi)
> it.blkaddr = erofs_blknr(sbi, erofs_iloc(vi) + vi->inode_isize);
> it.ofs = erofs_blkoff(sbi, erofs_iloc(vi) + vi->inode_isize);
>
> - ret = blk_read(sbi, 0, it.page, it.blkaddr, 1);
> + ret = erofs_blk_read(sbi, 0, it.page, it.blkaddr, 1);
> if (ret < 0)
> return -EIO;
>
> @@ -1074,7 +1074,7 @@ static int init_inode_xattrs(struct erofs_inode *vi)
> /* cannot be unaligned */
> DBG_BUGON(it.ofs != erofs_blksiz(sbi));
>
> - ret = blk_read(sbi, 0, it.page, ++it.blkaddr, 1);
> + ret = erofs_blk_read(sbi, 0, it.page, ++it.blkaddr, 1);
> if (ret < 0) {
> free(vi->xattr_shared_xattrs);
> vi->xattr_shared_xattrs = NULL;
> @@ -1120,7 +1120,7 @@ static inline int xattr_iter_fixup(struct xattr_iter *it)
>
> it->blkaddr += erofs_blknr(sbi, it->ofs);
>
> - ret = blk_read(sbi, 0, it->page, it->blkaddr, 1);
> + ret = erofs_blk_read(sbi, 0, it->page, it->blkaddr, 1);
> if (ret < 0)
> return -EIO;
>
> @@ -1147,7 +1147,7 @@ static int inline_xattr_iter_pre(struct xattr_iter *it,
> it->blkaddr = erofs_blknr(sbi, erofs_iloc(vi) + inline_xattr_ofs);
> it->ofs = erofs_blkoff(sbi, erofs_iloc(vi) + inline_xattr_ofs);
>
> - ret = blk_read(sbi, 0, it->page, it->blkaddr, 1);
> + ret = erofs_blk_read(sbi, 0, it->page, it->blkaddr, 1);
> if (ret < 0)
> return -EIO;
>
> @@ -1374,7 +1374,7 @@ static int shared_getxattr(struct erofs_inode *vi, struct getxattr_iter *it)
> it->it.ofs = xattrblock_offset(vi, vi->xattr_shared_xattrs[i]);
>
> if (!i || blkaddr != it->it.blkaddr) {
> - ret = blk_read(vi->sbi, 0, it->it.page, blkaddr, 1);
> + ret = erofs_blk_read(vi->sbi, 0, it->it.page, blkaddr, 1);
> if (ret < 0)
> return -EIO;
>
> @@ -1530,7 +1530,7 @@ static int shared_listxattr(struct erofs_inode *vi, struct listxattr_iter *it)
>
> it->it.ofs = xattrblock_offset(vi, vi->xattr_shared_xattrs[i]);
> if (!i || blkaddr != it->it.blkaddr) {
> - ret = blk_read(vi->sbi, 0, it->it.page, blkaddr, 1);
> + ret = erofs_blk_read(vi->sbi, 0, it->it.page, blkaddr, 1);
> if (ret < 0)
> return -EIO;
>
> diff --git a/lib/zmap.c b/lib/zmap.c
> index 2ec8505..d75174e 100644
> --- a/lib/zmap.c
> +++ b/lib/zmap.c
> @@ -43,7 +43,7 @@ static int z_erofs_fill_inode_lazy(struct erofs_inode *vi)
> return 0;
>
> pos = round_up(erofs_iloc(vi) + vi->inode_isize + vi->xattr_isize, 8);
> - ret = dev_read(sbi, 0, buf, pos, sizeof(buf));
> + ret = erofs_dev_read(sbi, 0, buf, pos, sizeof(buf));
> if (ret < 0)
> return -EIO;
>
> @@ -133,7 +133,7 @@ static int z_erofs_reload_indexes(struct z_erofs_maprecorder *m,
> if (map->index == eblk)
> return 0;
>
> - ret = blk_read(m->inode->sbi, 0, mpage, eblk, 1);
> + ret = erofs_blk_read(m->inode->sbi, 0, mpage, eblk, 1);
> if (ret < 0)
> return -EIO;
>
> diff --git a/mkfs/main.c b/mkfs/main.c
> index 1cf2664..60b3cc4 100644
> --- a/mkfs/main.c
> +++ b/mkfs/main.c
> @@ -504,7 +504,7 @@ static void erofs_rebuild_cleanup(void)
> list_for_each_entry_safe(src, n, &rebuild_src_list, list) {
> list_del(&src->list);
> erofs_put_super(src);
> - dev_close(src);
> + erofs_dev_close(src);
> free(src);
> }
> rebuild_src_count = 0;
> @@ -901,7 +901,7 @@ static int mkfs_parse_options_cfg(int argc, char *argv[])
> return -ENOMEM;
> }
>
> - err = dev_open_ro(src, srcpath);
> + err = erofs_dev_open_ro(src, srcpath);
> if (err) {
> free(src);
> erofs_rebuild_cleanup();
> @@ -1001,7 +1001,7 @@ int erofs_mkfs_update_super_block(struct erofs_buffer_head *bh,
> }
> memcpy(buf + EROFS_SUPER_OFFSET, &sb, sizeof(sb));
>
> - ret = dev_write(&sbi, buf, erofs_btell(bh, false), EROFS_SUPER_END);
> + ret = erofs_dev_write(&sbi, buf, erofs_btell(bh, false), EROFS_SUPER_END);
> free(buf);
> erofs_bdrop(bh, false);
> return ret;
> @@ -1015,7 +1015,7 @@ static int erofs_mkfs_superblock_csum_set(void)
> unsigned int len;
> struct erofs_super_block *sb;
>
> - ret = blk_read(&sbi, 0, buf, 0, erofs_blknr(&sbi, EROFS_SUPER_END) + 1);
> + ret = erofs_blk_read(&sbi, 0, buf, 0, erofs_blknr(&sbi, EROFS_SUPER_END) + 1);
> if (ret) {
> erofs_err("failed to read superblock to set checksum: %s",
> erofs_strerror(ret));
> @@ -1045,7 +1045,7 @@ static int erofs_mkfs_superblock_csum_set(void)
> /* set up checksum field to erofs_super_block */
> sb->checksum = cpu_to_le32(crc);
>
> - ret = blk_write(&sbi, buf, 0, 1);
> + ret = erofs_blk_write(&sbi, buf, 0, 1);
> if (ret) {
> erofs_err("failed to write checksummed superblock: %s",
> erofs_strerror(ret));
> @@ -1240,7 +1240,7 @@ int main(int argc, char **argv)
> sbi.build_time_nsec = t.tv_usec;
> }
>
> - err = dev_open(&sbi, cfg.c_img_path);
> + err = erofs_dev_open(&sbi, cfg.c_img_path);
> if (err) {
> fprintf(stderr, "Try '%s --help' for more information.\n", argv[0]);
> return 1;
> @@ -1477,7 +1477,7 @@ int main(int argc, char **argv)
> if (err)
> goto exit;
>
> - err = dev_resize(&sbi, nblocks);
> + err = erofs_dev_resize(&sbi, nblocks);
>
> if (!err && erofs_sb_has_sb_chksum(&sbi))
> err = erofs_mkfs_superblock_csum_set();
> @@ -1485,7 +1485,7 @@ exit:
> z_erofs_compress_exit();
> z_erofs_dedupe_exit();
> erofs_blocklist_close();
> - dev_close(&sbi);
> + erofs_dev_close(&sbi);
> erofs_cleanup_compress_hints();
> erofs_cleanup_exclude_rules();
> if (cfg.c_chunkbits)
More information about the Linux-erofs
mailing list