Skip to content
This repository has been archived by the owner on Sep 24, 2020. It is now read-only.

Commit

Permalink
ext4: create function to read journal inode
Browse files Browse the repository at this point in the history
Factor out the code used in ext4_get_journal() to read a valid journal
inode from storage, enabling its reuse in other functions.

Signed-off-by: Eric Whitney <enwlinux@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
  • Loading branch information
Eric Whitney authored and tytso committed Sep 30, 2016
1 parent 9b623df commit c6cb7e7
Showing 1 changed file with 23 additions and 9 deletions.
32 changes: 23 additions & 9 deletions fs/ext4/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ static int ext4_feature_set_ok(struct super_block *sb, int readonly);
static void ext4_destroy_lazyinit_thread(void);
static void ext4_unregister_li_request(struct super_block *sb);
static void ext4_clear_request_list(void);
static struct inode *ext4_get_journal_inode(struct super_block *sb,
unsigned int journal_inum);

/*
* Lock ordering
Expand Down Expand Up @@ -4237,18 +4239,16 @@ static void ext4_init_journal_params(struct super_block *sb, journal_t *journal)
write_unlock(&journal->j_state_lock);
}

static journal_t *ext4_get_journal(struct super_block *sb,
unsigned int journal_inum)
static struct inode *ext4_get_journal_inode(struct super_block *sb,
unsigned int journal_inum)
{
struct inode *journal_inode;
journal_t *journal;

BUG_ON(!ext4_has_feature_journal(sb));

/* First, test for the existence of a valid inode on disk. Bad
* things happen if we iget() an unused inode, as the subsequent
* iput() will try to delete it. */

/*
* Test for the existence of a valid inode on disk. Bad things
* happen if we iget() an unused inode, as the subsequent iput()
* will try to delete it.
*/
journal_inode = ext4_iget(sb, journal_inum);
if (IS_ERR(journal_inode)) {
ext4_msg(sb, KERN_ERR, "no journal found");
Expand All @@ -4268,6 +4268,20 @@ static journal_t *ext4_get_journal(struct super_block *sb,
iput(journal_inode);
return NULL;
}
return journal_inode;
}

static journal_t *ext4_get_journal(struct super_block *sb,
unsigned int journal_inum)
{
struct inode *journal_inode;
journal_t *journal;

BUG_ON(!ext4_has_feature_journal(sb));

journal_inode = ext4_get_journal_inode(sb, journal_inum);
if (!journal_inode)
return NULL;

journal = jbd2_journal_init_inode(journal_inode);
if (!journal) {
Expand Down

0 comments on commit c6cb7e7

Please sign in to comment.