Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin() ext4: Add fallback for find_group_flex
This commit is contained in:
commit
4daa0682af
|
@ -715,6 +715,13 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode)
|
||||||
|
|
||||||
if (sbi->s_log_groups_per_flex) {
|
if (sbi->s_log_groups_per_flex) {
|
||||||
ret2 = find_group_flex(sb, dir, &group);
|
ret2 = find_group_flex(sb, dir, &group);
|
||||||
|
if (ret2 == -1) {
|
||||||
|
ret2 = find_group_other(sb, dir, &group);
|
||||||
|
if (ret2 == 0 && printk_ratelimit())
|
||||||
|
printk(KERN_NOTICE "ext4: find_group_flex "
|
||||||
|
"failed, fallback succeeded dir %lu\n",
|
||||||
|
dir->i_ino);
|
||||||
|
}
|
||||||
goto got_group;
|
goto got_group;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1368,6 +1368,10 @@ retry:
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We cannot recurse into the filesystem as the transaction is already
|
||||||
|
* started */
|
||||||
|
flags |= AOP_FLAG_NOFS;
|
||||||
|
|
||||||
page = grab_cache_page_write_begin(mapping, index, flags);
|
page = grab_cache_page_write_begin(mapping, index, flags);
|
||||||
if (!page) {
|
if (!page) {
|
||||||
ext4_journal_stop(handle);
|
ext4_journal_stop(handle);
|
||||||
|
@ -1377,7 +1381,7 @@ retry:
|
||||||
*pagep = page;
|
*pagep = page;
|
||||||
|
|
||||||
ret = block_write_begin(file, mapping, pos, len, flags, pagep, fsdata,
|
ret = block_write_begin(file, mapping, pos, len, flags, pagep, fsdata,
|
||||||
ext4_get_block);
|
ext4_get_block);
|
||||||
|
|
||||||
if (!ret && ext4_should_journal_data(inode)) {
|
if (!ret && ext4_should_journal_data(inode)) {
|
||||||
ret = walk_page_buffers(handle, page_buffers(page),
|
ret = walk_page_buffers(handle, page_buffers(page),
|
||||||
|
@ -2667,6 +2671,9 @@ retry:
|
||||||
ret = PTR_ERR(handle);
|
ret = PTR_ERR(handle);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
/* We cannot recurse into the filesystem as the transaction is already
|
||||||
|
* started */
|
||||||
|
flags |= AOP_FLAG_NOFS;
|
||||||
|
|
||||||
page = grab_cache_page_write_begin(mapping, index, flags);
|
page = grab_cache_page_write_begin(mapping, index, flags);
|
||||||
if (!page) {
|
if (!page) {
|
||||||
|
|
Loading…
Reference in New Issue