From: "Jose R. Santos" <jrs@us.ibm.com>
To: "Jose R. Santos" <jrs@us.ibm.com>,
"Theodore Ts'o" <tytso@mit.edu>,
linux-ext4@vger.kernel.org
Subject: [PATCH 01/15][e2fsprogs] libext2fs: Add 64-bit support to the undo manager
Date: Tue, 15 Jul 2008 11:50:08 -0500 [thread overview]
Message-ID: <20080715165008.28567.22096.stgit@ichigo> (raw)
In-Reply-To: <20080715164332.28567.27913.stgit@ichigo>
From: Jose R. Santos <jrs@us.ibm.com>
libext2fs: Add 64-bit support to the undo manager
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
--
lib/ext2fs/undo_io.c | 55 +++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 45 insertions(+), 10 deletions(-)
diff --git a/lib/ext2fs/undo_io.c b/lib/ext2fs/undo_io.c
index 827c038..7661b83 100644
--- a/lib/ext2fs/undo_io.c
+++ b/lib/ext2fs/undo_io.c
@@ -73,6 +73,10 @@ struct undo_private_data {
static errcode_t undo_open(const char *name, int flags, io_channel *channel);
static errcode_t undo_close(io_channel channel);
static errcode_t undo_set_blksize(io_channel channel, int blksize);
+static errcode_t undo_read_blk64(io_channel channel, unsigned long long block,
+ int count, void *data);
+static errcode_t undo_write_blk64(io_channel channel, unsigned long long block,
+ int count, const void *data);
static errcode_t undo_read_blk(io_channel channel, unsigned long block,
int count, void *data);
static errcode_t undo_write_blk(io_channel channel, unsigned long block,
@@ -82,6 +86,7 @@ static errcode_t undo_write_byte(io_channel channel, unsigned long offset,
int size, const void *data);
static errcode_t undo_set_option(io_channel channel, const char *option,
const char *arg);
+static errcode_t undo_get_stats(io_channel channel, io_stats *stats);
static struct struct_io_manager struct_undo_manager = {
EXT2_ET_MAGIC_IO_MANAGER,
@@ -93,7 +98,10 @@ static struct struct_io_manager struct_undo_manager = {
undo_write_blk,
undo_flush,
undo_write_byte,
- undo_set_option
+ undo_set_option,
+ undo_get_stats,
+ undo_read_blk64,
+ undo_write_blk64,
};
io_manager undo_io_manager = &struct_undo_manager;
@@ -190,17 +198,17 @@ static errcode_t write_block_size(TDB_CONTEXT *tdb, int block_size)
}
static errcode_t undo_write_tdb(io_channel channel,
- unsigned long block, int count)
+ unsigned long long block, int count)
{
int size, sz;
- unsigned long block_num, backing_blk_num;
+ unsigned long long block_num, backing_blk_num;
errcode_t retval = 0;
ext2_loff_t offset;
struct undo_private_data *data;
TDB_DATA tdb_key, tdb_data;
unsigned char *read_ptr;
- unsigned long end_block;
+ unsigned long long end_block;
data = (struct undo_private_data *) channel->private_data;
@@ -266,7 +274,7 @@ static errcode_t undo_write_tdb(io_channel channel,
sz = count / channel->block_size;
else
sz = -count;
- retval = io_channel_read_blk(data->real, backing_blk_num,
+ retval = io_channel_read_blk64(data->real, backing_blk_num,
sz, read_ptr);
if (retval) {
if (retval != EXT2_ET_SHORT_READ) {
@@ -285,7 +293,7 @@ static errcode_t undo_write_tdb(io_channel channel,
tdb_data.dptr = read_ptr +
((offset - data->offset) % channel->block_size);
#ifdef DEBUG
- printf("Printing with key %ld data %x and size %d\n",
+ printf("Printing with key %lld data %x and size %d\n",
block_num,
tdb_data.dptr,
tdb_data.dsize);
@@ -455,7 +463,7 @@ static errcode_t undo_set_blksize(io_channel channel, int blksize)
return retval;
}
-static errcode_t undo_read_blk(io_channel channel, unsigned long block,
+static errcode_t undo_read_blk64(io_channel channel, unsigned long long block,
int count, void *buf)
{
errcode_t retval = 0;
@@ -466,12 +474,18 @@ static errcode_t undo_read_blk(io_channel channel, unsigned long block,
EXT2_CHECK_MAGIC(data, EXT2_ET_MAGIC_UNIX_IO_CHANNEL);
if (data->real)
- retval = io_channel_read_blk(data->real, block, count, buf);
+ retval = io_channel_read_blk64(data->real, block, count, buf);
return retval;
}
-static errcode_t undo_write_blk(io_channel channel, unsigned long block,
+static errcode_t undo_read_blk(io_channel channel, unsigned long block,
+ int count, void *buf)
+{
+ return undo_read_blk64(channel, block, count, buf);
+}
+
+static errcode_t undo_write_blk64(io_channel channel, unsigned long long block,
int count, const void *buf)
{
struct undo_private_data *data;
@@ -487,11 +501,17 @@ static errcode_t undo_write_blk(io_channel channel, unsigned long block,
if (retval)
return retval;
if (data->real)
- retval = io_channel_write_blk(data->real, block, count, buf);
+ retval = io_channel_write_blk64(data->real, block, count, buf);
return retval;
}
+static errcode_t undo_write_blk(io_channel channel, unsigned long block,
+ int count, const void *buf)
+{
+ return undo_write_blk64(channel, block, count, buf);
+}
+
static errcode_t undo_write_byte(io_channel channel, unsigned long offset,
int size, const void *buf)
{
@@ -584,3 +604,18 @@ static errcode_t undo_set_option(io_channel channel, const char *option,
}
return retval;
}
+
+static errcode_t undo_get_stats(io_channel channel, io_stats *stats)
+{
+ errcode_t retval;
+ struct undo_private_data *data;
+
+ EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
+ data = (struct undo_private_data *) channel->private_data;
+ EXT2_CHECK_MAGIC(data, EXT2_ET_MAGIC_UNIX_IO_CHANNEL);
+
+ if (data->real)
+ retval = (data->real->manager->get_stats)(data->real, stats);
+
+ return retval;
+}
next prev parent reply other threads:[~2008-07-15 16:50 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-15 16:50 [PATCH 00/15][e2fsprogs] Initial blk64_t capable API calls Jose R. Santos
2008-07-15 16:50 ` Jose R. Santos [this message]
2008-07-16 11:16 ` [PATCH 01/15][e2fsprogs] libext2fs: Add 64-bit support to the undo manager Goswin von Brederlow
2008-07-16 13:26 ` Theodore Tso
2008-07-15 16:50 ` [PATCH 02/15][e2fsprogs] Add ext2_off64_t type Jose R. Santos
2008-07-15 16:50 ` [PATCH 03/15][e2fsprogs] Add new blk64_t handling functions Jose R. Santos
2008-07-15 16:50 ` [PATCH 04/15][e2fsprogs] Use blk64_t for blocks in struct ext2_file Jose R. Santos
2008-07-15 16:50 ` [PATCH 05/15][e2fsprogs] Add 64-bit dirblock interface Jose R. Santos
2008-07-15 16:50 ` [PATCH 06/15][e2fsprogs] Add 64-bit alloc_stats interface Jose R. Santos
2008-07-15 16:50 ` [PATCH 07/15][e2fsprogs] Add 64-bit alloc interface Jose R. Santos
2008-07-15 16:50 ` [PATCH 08/15][e2fsprogs] Add 64-bit ext_attr interface Jose R. Santos
2008-07-15 16:50 ` [PATCH 09/15][e2fsprogs] Add 64-bit closefs interface Jose R. Santos
2008-07-15 16:51 ` [PATCH 10/15][e2fsprogs] Use new ext2fs_super_and_bgd_loc2 call in libext2fs Jose R. Santos
2008-07-15 16:51 ` [PATCH 11/15][e2fsprogs] Add 64-bit openfs interface Jose R. Santos
2008-07-15 16:51 ` [PATCH 12/15][e2fsprogs] Add ext2fs_div64_ceil() Jose R. Santos
2008-07-15 16:51 ` [PATCH 13/15][e2fsprogs] Add 64-bit getsize interface Jose R. Santos
2008-07-15 16:51 ` [PATCH 14/15][e2fsprogs] Add 64-bit mkjournal.c interface Jose R. Santos
2008-07-15 16:51 ` [PATCH 15/15][e2fsprogs] 64-bit mke2fs cleanup Jose R. Santos
2008-07-16 12:50 ` Goswin von Brederlow
2008-07-16 13:52 ` Goswin von Brederlow
2008-07-16 14:18 ` Jose R. Santos
2008-07-16 15:23 ` Goswin von Brederlow
2008-07-16 16:02 ` Jose R. Santos
2008-07-16 17:18 ` Theodore Tso
2008-07-16 18:03 ` Jose R. Santos
2008-07-16 18:58 ` Goswin von Brederlow
2008-07-16 14:09 ` Jose R. Santos
2008-07-16 14:54 ` Theodore Tso
2008-07-16 15:18 ` Jose R. Santos
2008-07-16 16:31 ` Theodore Tso
2008-07-16 17:26 ` Jose R. Santos
2008-07-16 19:07 ` Goswin von Brederlow
2008-07-16 19:40 ` Jose R. Santos
2008-07-16 15:21 ` Goswin von Brederlow
2008-07-16 15:30 ` Jose R. Santos
2008-07-16 15:13 ` Goswin von Brederlow
2008-07-16 17:44 ` Jose R. Santos
2008-07-16 16:31 ` Goswin von Brederlow
2008-07-17 20:46 ` [PATCH 15/15][e2fsprogs] 64-bit mke2fs cleanup [NEW Version] Jose R. Santos
2008-07-18 11:35 ` Goswin von Brederlow
2008-07-18 15:15 ` Jose R. Santos
2008-07-18 19:59 ` Goswin von Brederlow
2008-07-21 5:04 ` Andreas Dilger
-- strict thread matches above, loose matches on Subject: below --
2008-08-20 17:32 [PATCH 00/15] [e2fsprogs] Initial blk64_t capable API calls Jose R. Santos
2008-08-20 17:32 ` [PATCH 01/15][e2fsprogs] libext2fs: Add 64-bit support to the undo manager Jose R. Santos
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080715165008.28567.22096.stgit@ichigo \
--to=jrs@us.ibm.com \
--cc=linux-ext4@vger.kernel.org \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.