debugfs: fix logdump to work on files > 2GB

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
next
Theodore Ts'o 2016-06-12 21:42:47 -04:00
parent 7bd03cf6a1
commit 5eca88c1dc
1 changed files with 8 additions and 9 deletions

View File

@ -277,7 +277,7 @@ print_usage:
static int read_journal_block(const char *cmd, struct journal_source *source, static int read_journal_block(const char *cmd, struct journal_source *source,
off_t offset, char *buf, unsigned int size) ext2_loff_t offset, char *buf, unsigned int size)
{ {
int retval; int retval;
unsigned int got; unsigned int got;
@ -295,8 +295,8 @@ static int read_journal_block(const char *cmd, struct journal_source *source,
got = retval; got = retval;
retval = 0; retval = 0;
} else { } else {
retval = ext2fs_file_lseek(source->file, offset, retval = ext2fs_file_llseek(source->file, offset,
EXT2_SEEK_SET, NULL); EXT2_SEEK_SET, NULL);
if (retval) { if (retval) {
seek_err: seek_err:
com_err(cmd, retval, "while seeking in reading journal"); com_err(cmd, retval, "while seeking in reading journal");
@ -346,7 +346,6 @@ static void dump_journal(char *cmdname, FILE *out_file,
int retval; int retval;
__u32 magic, sequence, blocktype; __u32 magic, sequence, blocktype;
journal_header_t *header; journal_header_t *header;
tid_t transaction; tid_t transaction;
unsigned int blocknr = 0; unsigned int blocknr = 0;
@ -378,8 +377,8 @@ static void dump_journal(char *cmdname, FILE *out_file,
} }
/* Next, read the journal superblock */ /* Next, read the journal superblock */
retval = read_journal_block(cmdname, source,
retval = read_journal_block(cmdname, source, blocknr*blocksize, ((ext2_loff_t) blocknr) * blocksize,
jsb_buffer, 1024); jsb_buffer, 1024);
if (retval) if (retval)
return; return;
@ -407,8 +406,8 @@ static void dump_journal(char *cmdname, FILE *out_file,
while (1) { while (1) {
retval = read_journal_block(cmdname, source, retval = read_journal_block(cmdname, source,
blocknr*blocksize, buf, ((ext2_loff_t) blocknr) * blocksize,
blocksize); buf, blocksize);
if (retval) if (retval)
return; return;
@ -646,7 +645,7 @@ static void dump_metadata_block(FILE *out_file, struct journal_source *source,
return; return;
retval = read_journal_block("logdump", source, retval = read_journal_block("logdump", source,
blocksize * log_blocknr, ((ext2_loff_t) log_blocknr) * blocksize,
buf, blocksize); buf, blocksize);
if (retval) if (retval)
return; return;