Skip to content

Commit

Permalink
jbd: Journal block numbers can ever be only 32-bit use unsigned int f…
Browse files Browse the repository at this point in the history
…or them

It does not make sense to store block number for journal as unsigned long
since they can be only 32-bit (because of on-disk format limitation). So
change in-memory structures and variables to use unsigned int instead.

Signed-off-by: Jan Kara <jack@suse.cz>
  • Loading branch information
Jan Kara committed Sep 16, 2009
1 parent 19003c1 commit 9c28cbc
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 49 deletions.
6 changes: 3 additions & 3 deletions fs/jbd/checkpoint.c
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ int cleanup_journal_tail(journal_t *journal)
{
transaction_t * transaction;
tid_t first_tid;
unsigned long blocknr, freed;
unsigned int blocknr, freed;

if (is_journal_aborted(journal))
return 1;
Expand Down Expand Up @@ -502,8 +502,8 @@ int cleanup_journal_tail(journal_t *journal)
freed = freed + journal->j_last - journal->j_first;

jbd_debug(1,
"Cleaning journal tail from %d to %d (offset %lu), "
"freeing %lu\n",
"Cleaning journal tail from %d to %d (offset %u), "
"freeing %u\n",
journal->j_tail_sequence, first_tid, blocknr, freed);

journal->j_free += freed;
Expand Down
2 changes: 1 addition & 1 deletion fs/jbd/commit.c
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ void journal_commit_transaction(journal_t *journal)
int bufs;
int flags;
int err;
unsigned long blocknr;
unsigned int blocknr;
ktime_t start_time;
u64 commit_time;
char *tagp = NULL;
Expand Down
30 changes: 15 additions & 15 deletions fs/jbd/journal.c
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ static void journal_kill_thread(journal_t *journal)
int journal_write_metadata_buffer(transaction_t *transaction,
struct journal_head *jh_in,
struct journal_head **jh_out,
unsigned long blocknr)
unsigned int blocknr)
{
int need_copy_out = 0;
int done_copy_out = 0;
Expand Down Expand Up @@ -567,9 +567,9 @@ int log_wait_commit(journal_t *journal, tid_t tid)
* Log buffer allocation routines:
*/

int journal_next_log_block(journal_t *journal, unsigned long *retp)
int journal_next_log_block(journal_t *journal, unsigned int *retp)
{
unsigned long blocknr;
unsigned int blocknr;

spin_lock(&journal->j_state_lock);
J_ASSERT(journal->j_free > 1);
Expand All @@ -590,11 +590,11 @@ int journal_next_log_block(journal_t *journal, unsigned long *retp)
* this is a no-op. If needed, we can use j_blk_offset - everything is
* ready.
*/
int journal_bmap(journal_t *journal, unsigned long blocknr,
unsigned long *retp)
int journal_bmap(journal_t *journal, unsigned int blocknr,
unsigned int *retp)
{
int err = 0;
unsigned long ret;
unsigned int ret;

if (journal->j_inode) {
ret = bmap(journal->j_inode, blocknr);
Expand All @@ -604,7 +604,7 @@ int journal_bmap(journal_t *journal, unsigned long blocknr,
char b[BDEVNAME_SIZE];

printk(KERN_ALERT "%s: journal block not found "
"at offset %lu on %s\n",
"at offset %u on %s\n",
__func__,
blocknr,
bdevname(journal->j_dev, b));
Expand All @@ -630,7 +630,7 @@ int journal_bmap(journal_t *journal, unsigned long blocknr,
struct journal_head *journal_get_descriptor_buffer(journal_t *journal)
{
struct buffer_head *bh;
unsigned long blocknr;
unsigned int blocknr;
int err;

err = journal_next_log_block(journal, &blocknr);
Expand Down Expand Up @@ -774,7 +774,7 @@ journal_t * journal_init_inode (struct inode *inode)
journal_t *journal = journal_init_common();
int err;
int n;
unsigned long blocknr;
unsigned int blocknr;

if (!journal)
return NULL;
Expand Down Expand Up @@ -846,12 +846,12 @@ static void journal_fail_superblock (journal_t *journal)
static int journal_reset(journal_t *journal)
{
journal_superblock_t *sb = journal->j_superblock;
unsigned long first, last;
unsigned int first, last;

first = be32_to_cpu(sb->s_first);
last = be32_to_cpu(sb->s_maxlen);
if (first + JFS_MIN_JOURNAL_BLOCKS > last + 1) {
printk(KERN_ERR "JBD: Journal too short (blocks %lu-%lu).\n",
printk(KERN_ERR "JBD: Journal too short (blocks %u-%u).\n",
first, last);
journal_fail_superblock(journal);
return -EINVAL;
Expand Down Expand Up @@ -885,7 +885,7 @@ static int journal_reset(journal_t *journal)
**/
int journal_create(journal_t *journal)
{
unsigned long blocknr;
unsigned int blocknr;
struct buffer_head *bh;
journal_superblock_t *sb;
int i, err;
Expand Down Expand Up @@ -969,14 +969,14 @@ void journal_update_superblock(journal_t *journal, int wait)
if (sb->s_start == 0 && journal->j_tail_sequence ==
journal->j_transaction_sequence) {
jbd_debug(1,"JBD: Skipping superblock update on recovered sb "
"(start %ld, seq %d, errno %d)\n",
"(start %u, seq %d, errno %d)\n",
journal->j_tail, journal->j_tail_sequence,
journal->j_errno);
goto out;
}

spin_lock(&journal->j_state_lock);
jbd_debug(1,"JBD: updating superblock (start %ld, seq %d, errno %d)\n",
jbd_debug(1,"JBD: updating superblock (start %u, seq %d, errno %d)\n",
journal->j_tail, journal->j_tail_sequence, journal->j_errno);

sb->s_sequence = cpu_to_be32(journal->j_tail_sequence);
Expand Down Expand Up @@ -1371,7 +1371,7 @@ int journal_flush(journal_t *journal)
{
int err = 0;
transaction_t *transaction = NULL;
unsigned long old_tail;
unsigned int old_tail;

spin_lock(&journal->j_state_lock);

Expand Down
18 changes: 9 additions & 9 deletions fs/jbd/recovery.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
{
int err;
unsigned int max, nbufs, next;
unsigned long blocknr;
unsigned int blocknr;
struct buffer_head *bh;

struct buffer_head * bufs[MAXBUF];
Expand Down Expand Up @@ -132,7 +132,7 @@ static int jread(struct buffer_head **bhp, journal_t *journal,
unsigned int offset)
{
int err;
unsigned long blocknr;
unsigned int blocknr;
struct buffer_head *bh;

*bhp = NULL;
Expand Down Expand Up @@ -314,7 +314,7 @@ static int do_one_pass(journal_t *journal,
struct recovery_info *info, enum passtype pass)
{
unsigned int first_commit_ID, next_commit_ID;
unsigned long next_log_block;
unsigned int next_log_block;
int err, success = 0;
journal_superblock_t * sb;
journal_header_t * tmp;
Expand Down Expand Up @@ -367,14 +367,14 @@ static int do_one_pass(journal_t *journal,
if (tid_geq(next_commit_ID, info->end_transaction))
break;

jbd_debug(2, "Scanning for sequence ID %u at %lu/%lu\n",
jbd_debug(2, "Scanning for sequence ID %u at %u/%u\n",
next_commit_ID, next_log_block, journal->j_last);

/* Skip over each chunk of the transaction looking
* either the next descriptor block or the final commit
* record. */

jbd_debug(3, "JBD: checking block %ld\n", next_log_block);
jbd_debug(3, "JBD: checking block %u\n", next_log_block);
err = jread(&bh, journal, next_log_block);
if (err)
goto failed;
Expand Down Expand Up @@ -429,7 +429,7 @@ static int do_one_pass(journal_t *journal,
tagp = &bh->b_data[sizeof(journal_header_t)];
while ((tagp - bh->b_data +sizeof(journal_block_tag_t))
<= journal->j_blocksize) {
unsigned long io_block;
unsigned int io_block;

tag = (journal_block_tag_t *) tagp;
flags = be32_to_cpu(tag->t_flags);
Expand All @@ -443,10 +443,10 @@ static int do_one_pass(journal_t *journal,
success = err;
printk (KERN_ERR
"JBD: IO error %d recovering "
"block %ld in log\n",
"block %u in log\n",
err, io_block);
} else {
unsigned long blocknr;
unsigned int blocknr;

J_ASSERT(obh != NULL);
blocknr = be32_to_cpu(tag->t_blocknr);
Expand Down Expand Up @@ -581,7 +581,7 @@ static int scan_revoke_records(journal_t *journal, struct buffer_head *bh,
max = be32_to_cpu(header->r_count);

while (offset < max) {
unsigned long blocknr;
unsigned int blocknr;
int err;

blocknr = be32_to_cpu(* ((__be32 *) (bh->b_data+offset)));
Expand Down
16 changes: 8 additions & 8 deletions fs/jbd/revoke.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ struct jbd_revoke_record_s
{
struct list_head hash;
tid_t sequence; /* Used for recovery only */
unsigned long blocknr;
unsigned int blocknr;
};


Expand All @@ -126,7 +126,7 @@ static void flush_descriptor(journal_t *, struct journal_head *, int, int);
/* Utility functions to maintain the revoke table */

/* Borrowed from buffer.c: this is a tried and tested block hash function */
static inline int hash(journal_t *journal, unsigned long block)
static inline int hash(journal_t *journal, unsigned int block)
{
struct jbd_revoke_table_s *table = journal->j_revoke;
int hash_shift = table->hash_shift;
Expand All @@ -136,7 +136,7 @@ static inline int hash(journal_t *journal, unsigned long block)
(block << (hash_shift - 12))) & (table->hash_size - 1);
}

static int insert_revoke_hash(journal_t *journal, unsigned long blocknr,
static int insert_revoke_hash(journal_t *journal, unsigned int blocknr,
tid_t seq)
{
struct list_head *hash_list;
Expand Down Expand Up @@ -166,7 +166,7 @@ static int insert_revoke_hash(journal_t *journal, unsigned long blocknr,
/* Find a revoke record in the journal's hash table. */

static struct jbd_revoke_record_s *find_revoke_record(journal_t *journal,
unsigned long blocknr)
unsigned int blocknr)
{
struct list_head *hash_list;
struct jbd_revoke_record_s *record;
Expand Down Expand Up @@ -332,7 +332,7 @@ void journal_destroy_revoke(journal_t *journal)
* by one.
*/

int journal_revoke(handle_t *handle, unsigned long blocknr,
int journal_revoke(handle_t *handle, unsigned int blocknr,
struct buffer_head *bh_in)
{
struct buffer_head *bh = NULL;
Expand Down Expand Up @@ -401,7 +401,7 @@ int journal_revoke(handle_t *handle, unsigned long blocknr,
}
}

jbd_debug(2, "insert revoke for block %lu, bh_in=%p\n", blocknr, bh_in);
jbd_debug(2, "insert revoke for block %u, bh_in=%p\n", blocknr, bh_in);
err = insert_revoke_hash(journal, blocknr,
handle->h_transaction->t_tid);
BUFFER_TRACE(bh_in, "exit");
Expand Down Expand Up @@ -644,7 +644,7 @@ static void flush_descriptor(journal_t *journal,
*/

int journal_set_revoke(journal_t *journal,
unsigned long blocknr,
unsigned int blocknr,
tid_t sequence)
{
struct jbd_revoke_record_s *record;
Expand All @@ -668,7 +668,7 @@ int journal_set_revoke(journal_t *journal,
*/

int journal_test_revoke(journal_t *journal,
unsigned long blocknr,
unsigned int blocknr,
tid_t sequence)
{
struct jbd_revoke_record_s *record;
Expand Down
26 changes: 13 additions & 13 deletions include/linux/jbd.h
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,7 @@ struct transaction_s
/*
* Where in the log does this transaction's commit start? [no locking]
*/
unsigned long t_log_start;
unsigned int t_log_start;

/* Number of buffers on the t_buffers list [j_list_lock] */
int t_nr_buffers;
Expand Down Expand Up @@ -701,34 +701,34 @@ struct journal_s
* Journal head: identifies the first unused block in the journal.
* [j_state_lock]
*/
unsigned long j_head;
unsigned int j_head;

/*
* Journal tail: identifies the oldest still-used block in the journal.
* [j_state_lock]
*/
unsigned long j_tail;
unsigned int j_tail;

/*
* Journal free: how many free blocks are there in the journal?
* [j_state_lock]
*/
unsigned long j_free;
unsigned int j_free;

/*
* Journal start and end: the block numbers of the first usable block
* and one beyond the last usable block in the journal. [j_state_lock]
*/
unsigned long j_first;
unsigned long j_last;
unsigned int j_first;
unsigned int j_last;

/*
* Device, blocksize and starting block offset for the location where we
* store the journal.
*/
struct block_device *j_dev;
int j_blocksize;
unsigned long j_blk_offset;
unsigned int j_blk_offset;

/*
* Device which holds the client fs. For internal journal this will be
Expand Down Expand Up @@ -859,7 +859,7 @@ extern void __journal_clean_data_list(transaction_t *transaction);

/* Log buffer allocation */
extern struct journal_head * journal_get_descriptor_buffer(journal_t *);
int journal_next_log_block(journal_t *, unsigned long *);
int journal_next_log_block(journal_t *, unsigned int *);

/* Commit management */
extern void journal_commit_transaction(journal_t *);
Expand All @@ -874,7 +874,7 @@ extern int
journal_write_metadata_buffer(transaction_t *transaction,
struct journal_head *jh_in,
struct journal_head **jh_out,
unsigned long blocknr);
unsigned int blocknr);

/* Transaction locking */
extern void __wait_on_journal (journal_t *);
Expand Down Expand Up @@ -942,7 +942,7 @@ extern void journal_abort (journal_t *, int);
extern int journal_errno (journal_t *);
extern void journal_ack_err (journal_t *);
extern int journal_clear_err (journal_t *);
extern int journal_bmap(journal_t *, unsigned long, unsigned long *);
extern int journal_bmap(journal_t *, unsigned int, unsigned int *);
extern int journal_force_commit(journal_t *);

/*
Expand Down Expand Up @@ -976,14 +976,14 @@ extern int journal_init_revoke_caches(void);

extern void journal_destroy_revoke(journal_t *);
extern int journal_revoke (handle_t *,
unsigned long, struct buffer_head *);
unsigned int, struct buffer_head *);
extern int journal_cancel_revoke(handle_t *, struct journal_head *);
extern void journal_write_revoke_records(journal_t *,
transaction_t *, int);

/* Recovery revoke support */
extern int journal_set_revoke(journal_t *, unsigned long, tid_t);
extern int journal_test_revoke(journal_t *, unsigned long, tid_t);
extern int journal_set_revoke(journal_t *, unsigned int, tid_t);
extern int journal_test_revoke(journal_t *, unsigned int, tid_t);
extern void journal_clear_revoke(journal_t *);
extern void journal_switch_revoke_table(journal_t *journal);

Expand Down

0 comments on commit 9c28cbc

Please sign in to comment.