diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/ext4/ialloc.c | 7 | ||||
| -rw-r--r-- | fs/ext4/inode.c | 9 | ||||
| -rw-r--r-- | fs/proc/inode.c | 4 | ||||
| -rw-r--r-- | fs/proc/page.c | 2 |
4 files changed, 19 insertions, 3 deletions
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 4fb86a0061d..f18a919be70 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c | |||
| @@ -715,6 +715,13 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode) | |||
| 715 | 715 | ||
| 716 | if (sbi->s_log_groups_per_flex) { | 716 | if (sbi->s_log_groups_per_flex) { |
| 717 | ret2 = find_group_flex(sb, dir, &group); | 717 | ret2 = find_group_flex(sb, dir, &group); |
| 718 | if (ret2 == -1) { | ||
| 719 | ret2 = find_group_other(sb, dir, &group); | ||
| 720 | if (ret2 == 0 && printk_ratelimit()) | ||
| 721 | printk(KERN_NOTICE "ext4: find_group_flex " | ||
| 722 | "failed, fallback succeeded dir %lu\n", | ||
| 723 | dir->i_ino); | ||
| 724 | } | ||
| 718 | goto got_group; | 725 | goto got_group; |
| 719 | } | 726 | } |
| 720 | 727 | ||
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index cbd2ca99d11..51cdd13e1c3 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
| @@ -1368,6 +1368,10 @@ retry: | |||
| 1368 | goto out; | 1368 | goto out; |
| 1369 | } | 1369 | } |
| 1370 | 1370 | ||
| 1371 | /* We cannot recurse into the filesystem as the transaction is already | ||
| 1372 | * started */ | ||
| 1373 | flags |= AOP_FLAG_NOFS; | ||
| 1374 | |||
| 1371 | page = grab_cache_page_write_begin(mapping, index, flags); | 1375 | page = grab_cache_page_write_begin(mapping, index, flags); |
| 1372 | if (!page) { | 1376 | if (!page) { |
| 1373 | ext4_journal_stop(handle); | 1377 | ext4_journal_stop(handle); |
| @@ -1377,7 +1381,7 @@ retry: | |||
| 1377 | *pagep = page; | 1381 | *pagep = page; |
| 1378 | 1382 | ||
| 1379 | ret = block_write_begin(file, mapping, pos, len, flags, pagep, fsdata, | 1383 | ret = block_write_begin(file, mapping, pos, len, flags, pagep, fsdata, |
| 1380 | ext4_get_block); | 1384 | ext4_get_block); |
| 1381 | 1385 | ||
| 1382 | if (!ret && ext4_should_journal_data(inode)) { | 1386 | if (!ret && ext4_should_journal_data(inode)) { |
| 1383 | ret = walk_page_buffers(handle, page_buffers(page), | 1387 | ret = walk_page_buffers(handle, page_buffers(page), |
| @@ -2667,6 +2671,9 @@ retry: | |||
| 2667 | ret = PTR_ERR(handle); | 2671 | ret = PTR_ERR(handle); |
| 2668 | goto out; | 2672 | goto out; |
| 2669 | } | 2673 | } |
| 2674 | /* We cannot recurse into the filesystem as the transaction is already | ||
| 2675 | * started */ | ||
| 2676 | flags |= AOP_FLAG_NOFS; | ||
| 2670 | 2677 | ||
| 2671 | page = grab_cache_page_write_begin(mapping, index, flags); | 2678 | page = grab_cache_page_write_begin(mapping, index, flags); |
| 2672 | if (!page) { | 2679 | if (!page) { |
diff --git a/fs/proc/inode.c b/fs/proc/inode.c index 3e76bb9b3ad..d8bb5c671f4 100644 --- a/fs/proc/inode.c +++ b/fs/proc/inode.c | |||
| @@ -485,8 +485,10 @@ struct inode *proc_get_inode(struct super_block *sb, unsigned int ino, | |||
| 485 | } | 485 | } |
| 486 | } | 486 | } |
| 487 | unlock_new_inode(inode); | 487 | unlock_new_inode(inode); |
| 488 | } else | 488 | } else { |
| 489 | module_put(de->owner); | 489 | module_put(de->owner); |
| 490 | de_put(de); | ||
| 491 | } | ||
| 490 | return inode; | 492 | return inode; |
| 491 | 493 | ||
| 492 | out_ino: | 494 | out_ino: |
diff --git a/fs/proc/page.c b/fs/proc/page.c index 767d95a6d1b..2d1345112a4 100644 --- a/fs/proc/page.c +++ b/fs/proc/page.c | |||
| @@ -107,7 +107,7 @@ static ssize_t kpageflags_read(struct file *file, char __user *buf, | |||
| 107 | else | 107 | else |
| 108 | kflags = ppage->flags; | 108 | kflags = ppage->flags; |
| 109 | 109 | ||
| 110 | uflags = kpf_copy_bit(KPF_LOCKED, PG_locked, kflags) | | 110 | uflags = kpf_copy_bit(kflags, KPF_LOCKED, PG_locked) | |
| 111 | kpf_copy_bit(kflags, KPF_ERROR, PG_error) | | 111 | kpf_copy_bit(kflags, KPF_ERROR, PG_error) | |
| 112 | kpf_copy_bit(kflags, KPF_REFERENCED, PG_referenced) | | 112 | kpf_copy_bit(kflags, KPF_REFERENCED, PG_referenced) | |
| 113 | kpf_copy_bit(kflags, KPF_UPTODATE, PG_uptodate) | | 113 | kpf_copy_bit(kflags, KPF_UPTODATE, PG_uptodate) | |
