diff options
author | Jose R. Santos <jrs@us.ibm.com> | 2008-03-03 10:41:24 -0600 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2008-03-13 13:46:58 -0400 |
commit | 59ecd32dcb1d890bd52444c7cdeaabf8d9b2dbd1 (patch) | |
tree | 9a5742516e20ab8ea08d4c787263574d9d75c0ba /lib/ext2fs/unix_io.c | |
parent | 3154e1cceb9f49bd3898e9a91723141af55cdd36 (diff) | |
download | e2fsprogs-59ecd32dcb1d890bd52444c7cdeaabf8d9b2dbd1.tar.gz |
Add {read,write}_blk64 to unix_io.c
Add 64-bit block capable routines to Unix IO manager.
Signed-off-by: Jose R. Santos <jrs@us.ibm.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'lib/ext2fs/unix_io.c')
-rw-r--r-- | lib/ext2fs/unix_io.c | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c index 8497a415..eedbcdb3 100644 --- a/lib/ext2fs/unix_io.c +++ b/lib/ext2fs/unix_io.c @@ -88,7 +88,11 @@ static errcode_t unix_set_option(io_channel channel, const char *option, static errcode_t unix_get_stats(io_channel channel, io_stats *stats) ; static void reuse_cache(io_channel channel, struct unix_private_data *data, - struct unix_cache *cache, unsigned long block); + struct unix_cache *cache, unsigned long long block); +static errcode_t unix_read_blk64(io_channel channel, unsigned long long block, + int count, void *data); +static errcode_t unix_write_blk64(io_channel channel, unsigned long long block, + int count, const void *data); /* __FreeBSD_kernel__ is defined by GNU/kFreeBSD - the FreeBSD kernel * does not know buffered block devices - everything is raw. */ @@ -114,6 +118,8 @@ static struct struct_io_manager struct_unix_manager = { #endif unix_set_option, unix_get_stats, + unix_read_blk64, + unix_write_blk64, }; io_manager unix_io_manager = &struct_unix_manager; @@ -140,7 +146,7 @@ static errcode_t unix_get_stats(io_channel channel, io_stats *stats) #ifndef NEED_BOUNCE_BUFFER static errcode_t raw_read_blk(io_channel channel, struct unix_private_data *data, - unsigned long block, + unsigned long long block, int count, void *buf) { errcode_t retval; @@ -229,7 +235,7 @@ error_out: static errcode_t raw_write_blk(io_channel channel, struct unix_private_data *data, - unsigned long block, + unsigned long long block, int count, const void *buf) { ssize_t size; @@ -318,7 +324,7 @@ static void free_cache(struct unix_private_data *data) * entry to that should be reused. */ static struct unix_cache *find_cached_block(struct unix_private_data *data, - unsigned long block, + unsigned long long block, struct unix_cache **eldest) { struct unix_cache *cache, *unused_cache, *oldest_cache; @@ -348,7 +354,7 @@ static struct unix_cache *find_cached_block(struct unix_private_data *data, * Reuse a particular cache entry for another block. */ static void reuse_cache(io_channel channel, struct unix_private_data *data, - struct unix_cache *cache, unsigned long block) + struct unix_cache *cache, unsigned long long block) { if (cache->dirty && cache->in_use) raw_write_blk(channel, data, cache->block, 1, cache->buf); @@ -545,7 +551,7 @@ static errcode_t unix_set_blksize(io_channel channel, int blksize) } -static errcode_t unix_read_blk(io_channel channel, unsigned long block, +static errcode_t unix_read_blk64(io_channel channel, unsigned long long block, int count, void *buf) { struct unix_private_data *data; @@ -610,7 +616,13 @@ static errcode_t unix_read_blk(io_channel channel, unsigned long block, #endif /* NO_IO_CACHE */ } -static errcode_t unix_write_blk(io_channel channel, unsigned long block, +static errcode_t unix_read_blk(io_channel channel, unsigned long block, + int count, void *buf) +{ + return unix_read_blk64(channel, block, count, buf); +} + +static errcode_t unix_write_blk64(io_channel channel, unsigned long long block, int count, const void *buf) { struct unix_private_data *data; @@ -662,6 +674,12 @@ static errcode_t unix_write_blk(io_channel channel, unsigned long block, #endif /* NO_IO_CACHE */ } +static errcode_t unix_write_blk(io_channel channel, unsigned long block, + int count, const void *buf) +{ + return unix_write_blk64(channel, block, count, buf); +} + static errcode_t unix_write_byte(io_channel channel, unsigned long offset, int size, const void *buf) { |