mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 05:34:13 +08:00
ext4: create function to read journal inode
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>
This commit is contained in:
parent
9b623df614
commit
c6cb7e776a
@ -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
|
||||
@ -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");
|
||||
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user