From 51b263e3690ba3136fe63e5c722e0593772620e2 Mon Sep 17 00:00:00 2001 From: "Jose R. Santos" Date: Mon, 3 Mar 2008 10:41:29 -0600 Subject: [PATCH] Add {read,write}_blk64 to inode_io.c Add 64-bit block capable routines to inode IO manager. Since fileio.c does not yet have 64bit support, these routines will not handle 64bit block numbers correctly yet. Signed-off-by: Jose R. Santos Signed-off-by: "Theodore Ts'o" --- lib/ext2fs/inode_io.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/lib/ext2fs/inode_io.c b/lib/ext2fs/inode_io.c index b5c08b90..0e234942 100644 --- a/lib/ext2fs/inode_io.c +++ b/lib/ext2fs/inode_io.c @@ -56,7 +56,11 @@ static errcode_t inode_write_blk(io_channel channel, unsigned long block, static errcode_t inode_flush(io_channel channel); static errcode_t inode_write_byte(io_channel channel, unsigned long offset, int size, const void *data); - +static errcode_t inode_read_blk64(io_channel channel, + unsigned long long block, int count, void *data); +static errcode_t inode_write_blk64(io_channel channel, + unsigned long long block, int count, const void *data); + static struct struct_io_manager struct_inode_manager = { EXT2_ET_MAGIC_IO_MANAGER, "Inode I/O Manager", @@ -66,7 +70,11 @@ static struct struct_io_manager struct_inode_manager = { inode_read_blk, inode_write_blk, inode_flush, - inode_write_byte + inode_write_byte, + NULL, + NULL, + inode_read_blk64, + inode_write_blk64 }; io_manager inode_io_manager = &struct_inode_manager; @@ -197,8 +205,8 @@ static errcode_t inode_set_blksize(io_channel channel, int blksize) } -static errcode_t inode_read_blk(io_channel channel, unsigned long block, - int count, void *buf) +static errcode_t inode_read_blk64(io_channel channel, + unsigned long long block, int count, void *buf) { struct inode_private_data *data; errcode_t retval; @@ -217,8 +225,14 @@ static errcode_t inode_read_blk(io_channel channel, unsigned long block, return ext2fs_file_read(data->file, buf, count, 0); } -static errcode_t inode_write_blk(io_channel channel, unsigned long block, - int count, const void *buf) +static errcode_t inode_read_blk(io_channel channel, unsigned long block, + int count, void *buf) +{ + return inode_read_blk64(channel, block, count, buf); +} + +static errcode_t inode_write_blk64(io_channel channel, + unsigned long long block, int count, const void *buf) { struct inode_private_data *data; errcode_t retval; @@ -237,6 +251,12 @@ static errcode_t inode_write_blk(io_channel channel, unsigned long block, return ext2fs_file_write(data->file, buf, count, 0); } +static errcode_t inode_write_blk(io_channel channel, unsigned long block, + int count, const void *buf) +{ + return inode_write_blk64(channel, block, count, buf); +} + static errcode_t inode_write_byte(io_channel channel, unsigned long offset, int size, const void *buf) { -- 2.11.0