mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Miscellaneous ext4 cleanups and bug fixes. Pretty boring this
cycle... -----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEK2m5VNv+CHkogTfJ8vlZVpUNgaMFAmA3qgEACgkQ8vlZVpUN gaMHqwf+IGiMeyB3BnIbQZjcwgyxRYMMmod0tcGv4yK4bf85+rTZZMcPZm5Ioqwm +XLnuRW+x3Do6lnzNZj9p+qnPNwX2YGupwGeAoT5puMDKl0J7HhvdqPcNi4WgucW K+LCAxbPjVFUAkpD2gwgNgXej4Us1QP/93GGG8YhTd+jiYS7axrRbAlE+4SmCsye 83dEWpXSFDE0qXHoaPwLo26LMPySPjWM/UuiWD8ozQ+mcL0Doecw1tWJottSo+Ds +cJtxiOPVPTFwZUJOt/qoxfPnALrqAeazS+3lGmqK5c3xbvsc9CiYqP15FUbQF08 eCDMo9bpqQdRs4WmaRSvBzV8v+/TXg== =+amQ -----END PGP SIGNATURE----- Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Pull ext4 updates from Ted Ts'o: "Miscellaneous ext4 cleanups and bug fixes. Pretty boring this cycle..." * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: ext4: add .kunitconfig fragment to enable ext4-specific tests ext: EXT4_KUNIT_TESTS should depend on EXT4_FS instead of selecting it ext4: reset retry counter when ext4_alloc_file_blocks() makes progress ext4: fix potential htree index checksum corruption ext4: factor out htree rep invariant check ext4: Change list_for_each* to list_for_each_entry* ext4: don't try to processed freed blocks until mballoc is initialized ext4: use DEFINE_MUTEX() for mutex lock
This commit is contained in:
commit
6f9972bbfe
6 changed files with 59 additions and 49 deletions
|
@ -915,13 +915,11 @@ static int ext4_fc_submit_inode_data_all(journal_t *journal)
|
|||
struct super_block *sb = (struct super_block *)(journal->j_private);
|
||||
struct ext4_sb_info *sbi = EXT4_SB(sb);
|
||||
struct ext4_inode_info *ei;
|
||||
struct list_head *pos;
|
||||
int ret = 0;
|
||||
|
||||
spin_lock(&sbi->s_fc_lock);
|
||||
ext4_set_mount_flag(sb, EXT4_MF_FC_COMMITTING);
|
||||
list_for_each(pos, &sbi->s_fc_q[FC_Q_MAIN]) {
|
||||
ei = list_entry(pos, struct ext4_inode_info, i_fc_list);
|
||||
list_for_each_entry(ei, &sbi->s_fc_q[FC_Q_MAIN], i_fc_list) {
|
||||
ext4_set_inode_state(&ei->vfs_inode, EXT4_STATE_FC_COMMITTING);
|
||||
while (atomic_read(&ei->i_fc_updates)) {
|
||||
DEFINE_WAIT(wait);
|
||||
|
@ -978,17 +976,15 @@ __releases(&sbi->s_fc_lock)
|
|||
{
|
||||
struct super_block *sb = (struct super_block *)(journal->j_private);
|
||||
struct ext4_sb_info *sbi = EXT4_SB(sb);
|
||||
struct ext4_fc_dentry_update *fc_dentry;
|
||||
struct ext4_fc_dentry_update *fc_dentry, *fc_dentry_n;
|
||||
struct inode *inode;
|
||||
struct list_head *pos, *n, *fcd_pos, *fcd_n;
|
||||
struct ext4_inode_info *ei;
|
||||
struct ext4_inode_info *ei, *ei_n;
|
||||
int ret;
|
||||
|
||||
if (list_empty(&sbi->s_fc_dentry_q[FC_Q_MAIN]))
|
||||
return 0;
|
||||
list_for_each_safe(fcd_pos, fcd_n, &sbi->s_fc_dentry_q[FC_Q_MAIN]) {
|
||||
fc_dentry = list_entry(fcd_pos, struct ext4_fc_dentry_update,
|
||||
fcd_list);
|
||||
list_for_each_entry_safe(fc_dentry, fc_dentry_n,
|
||||
&sbi->s_fc_dentry_q[FC_Q_MAIN], fcd_list) {
|
||||
if (fc_dentry->fcd_op != EXT4_FC_TAG_CREAT) {
|
||||
spin_unlock(&sbi->s_fc_lock);
|
||||
if (!ext4_fc_add_dentry_tlv(
|
||||
|
@ -1004,8 +1000,8 @@ __releases(&sbi->s_fc_lock)
|
|||
}
|
||||
|
||||
inode = NULL;
|
||||
list_for_each_safe(pos, n, &sbi->s_fc_q[FC_Q_MAIN]) {
|
||||
ei = list_entry(pos, struct ext4_inode_info, i_fc_list);
|
||||
list_for_each_entry_safe(ei, ei_n, &sbi->s_fc_q[FC_Q_MAIN],
|
||||
i_fc_list) {
|
||||
if (ei->vfs_inode.i_ino == fc_dentry->fcd_ino) {
|
||||
inode = &ei->vfs_inode;
|
||||
break;
|
||||
|
@ -1057,7 +1053,6 @@ static int ext4_fc_perform_commit(journal_t *journal)
|
|||
struct ext4_sb_info *sbi = EXT4_SB(sb);
|
||||
struct ext4_inode_info *iter;
|
||||
struct ext4_fc_head head;
|
||||
struct list_head *pos;
|
||||
struct inode *inode;
|
||||
struct blk_plug plug;
|
||||
int ret = 0;
|
||||
|
@ -1099,8 +1094,7 @@ static int ext4_fc_perform_commit(journal_t *journal)
|
|||
goto out;
|
||||
}
|
||||
|
||||
list_for_each(pos, &sbi->s_fc_q[FC_Q_MAIN]) {
|
||||
iter = list_entry(pos, struct ext4_inode_info, i_fc_list);
|
||||
list_for_each_entry(iter, &sbi->s_fc_q[FC_Q_MAIN], i_fc_list) {
|
||||
inode = &iter->vfs_inode;
|
||||
if (!ext4_test_inode_state(inode, EXT4_STATE_FC_COMMITTING))
|
||||
continue;
|
||||
|
@ -1226,9 +1220,8 @@ static void ext4_fc_cleanup(journal_t *journal, int full)
|
|||
{
|
||||
struct super_block *sb = journal->j_private;
|
||||
struct ext4_sb_info *sbi = EXT4_SB(sb);
|
||||
struct ext4_inode_info *iter;
|
||||
struct ext4_inode_info *iter, *iter_n;
|
||||
struct ext4_fc_dentry_update *fc_dentry;
|
||||
struct list_head *pos, *n;
|
||||
|
||||
if (full && sbi->s_fc_bh)
|
||||
sbi->s_fc_bh = NULL;
|
||||
|
@ -1236,8 +1229,8 @@ static void ext4_fc_cleanup(journal_t *journal, int full)
|
|||
jbd2_fc_release_bufs(journal);
|
||||
|
||||
spin_lock(&sbi->s_fc_lock);
|
||||
list_for_each_safe(pos, n, &sbi->s_fc_q[FC_Q_MAIN]) {
|
||||
iter = list_entry(pos, struct ext4_inode_info, i_fc_list);
|
||||
list_for_each_entry_safe(iter, iter_n, &sbi->s_fc_q[FC_Q_MAIN],
|
||||
i_fc_list) {
|
||||
list_del_init(&iter->i_fc_list);
|
||||
ext4_clear_inode_state(&iter->vfs_inode,
|
||||
EXT4_STATE_FC_COMMITTING);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue