diff options
Diffstat (limited to 'fs/ext4/resize.c')
-rw-r--r-- | fs/ext4/resize.c | 83 |
1 files changed, 40 insertions, 43 deletions
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index e29efa0f9d62..9f086a6a472b 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c | |||
@@ -11,11 +11,10 @@ | |||
11 | 11 | ||
12 | #define EXT4FS_DEBUG | 12 | #define EXT4FS_DEBUG |
13 | 13 | ||
14 | #include <linux/ext4_jbd2.h> | ||
15 | |||
16 | #include <linux/errno.h> | 14 | #include <linux/errno.h> |
17 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
18 | 16 | ||
17 | #include "ext4_jbd2.h" | ||
19 | #include "group.h" | 18 | #include "group.h" |
20 | 19 | ||
21 | #define outside(b, first, last) ((b) < (first) || (b) >= (last)) | 20 | #define outside(b, first, last) ((b) < (first) || (b) >= (last)) |
@@ -50,63 +49,63 @@ static int verify_group_input(struct super_block *sb, | |||
50 | 49 | ||
51 | ext4_get_group_no_and_offset(sb, start, NULL, &offset); | 50 | ext4_get_group_no_and_offset(sb, start, NULL, &offset); |
52 | if (group != sbi->s_groups_count) | 51 | if (group != sbi->s_groups_count) |
53 | ext4_warning(sb, __FUNCTION__, | 52 | ext4_warning(sb, __func__, |
54 | "Cannot add at group %u (only %lu groups)", | 53 | "Cannot add at group %u (only %lu groups)", |
55 | input->group, sbi->s_groups_count); | 54 | input->group, sbi->s_groups_count); |
56 | else if (offset != 0) | 55 | else if (offset != 0) |
57 | ext4_warning(sb, __FUNCTION__, "Last group not full"); | 56 | ext4_warning(sb, __func__, "Last group not full"); |
58 | else if (input->reserved_blocks > input->blocks_count / 5) | 57 | else if (input->reserved_blocks > input->blocks_count / 5) |
59 | ext4_warning(sb, __FUNCTION__, "Reserved blocks too high (%u)", | 58 | ext4_warning(sb, __func__, "Reserved blocks too high (%u)", |
60 | input->reserved_blocks); | 59 | input->reserved_blocks); |
61 | else if (free_blocks_count < 0) | 60 | else if (free_blocks_count < 0) |
62 | ext4_warning(sb, __FUNCTION__, "Bad blocks count %u", | 61 | ext4_warning(sb, __func__, "Bad blocks count %u", |
63 | input->blocks_count); | 62 | input->blocks_count); |
64 | else if (!(bh = sb_bread(sb, end - 1))) | 63 | else if (!(bh = sb_bread(sb, end - 1))) |
65 | ext4_warning(sb, __FUNCTION__, | 64 | ext4_warning(sb, __func__, |
66 | "Cannot read last block (%llu)", | 65 | "Cannot read last block (%llu)", |
67 | end - 1); | 66 | end - 1); |
68 | else if (outside(input->block_bitmap, start, end)) | 67 | else if (outside(input->block_bitmap, start, end)) |
69 | ext4_warning(sb, __FUNCTION__, | 68 | ext4_warning(sb, __func__, |
70 | "Block bitmap not in group (block %llu)", | 69 | "Block bitmap not in group (block %llu)", |
71 | (unsigned long long)input->block_bitmap); | 70 | (unsigned long long)input->block_bitmap); |
72 | else if (outside(input->inode_bitmap, start, end)) | 71 | else if (outside(input->inode_bitmap, start, end)) |
73 | ext4_warning(sb, __FUNCTION__, | 72 | ext4_warning(sb, __func__, |
74 | "Inode bitmap not in group (block %llu)", | 73 | "Inode bitmap not in group (block %llu)", |
75 | (unsigned long long)input->inode_bitmap); | 74 | (unsigned long long)input->inode_bitmap); |
76 | else if (outside(input->inode_table, start, end) || | 75 | else if (outside(input->inode_table, start, end) || |
77 | outside(itend - 1, start, end)) | 76 | outside(itend - 1, start, end)) |
78 | ext4_warning(sb, __FUNCTION__, | 77 | ext4_warning(sb, __func__, |
79 | "Inode table not in group (blocks %llu-%llu)", | 78 | "Inode table not in group (blocks %llu-%llu)", |
80 | (unsigned long long)input->inode_table, itend - 1); | 79 | (unsigned long long)input->inode_table, itend - 1); |
81 | else if (input->inode_bitmap == input->block_bitmap) | 80 | else if (input->inode_bitmap == input->block_bitmap) |
82 | ext4_warning(sb, __FUNCTION__, | 81 | ext4_warning(sb, __func__, |
83 | "Block bitmap same as inode bitmap (%llu)", | 82 | "Block bitmap same as inode bitmap (%llu)", |
84 | (unsigned long long)input->block_bitmap); | 83 | (unsigned long long)input->block_bitmap); |
85 | else if (inside(input->block_bitmap, input->inode_table, itend)) | 84 | else if (inside(input->block_bitmap, input->inode_table, itend)) |
86 | ext4_warning(sb, __FUNCTION__, | 85 | ext4_warning(sb, __func__, |
87 | "Block bitmap (%llu) in inode table (%llu-%llu)", | 86 | "Block bitmap (%llu) in inode table (%llu-%llu)", |
88 | (unsigned long long)input->block_bitmap, | 87 | (unsigned long long)input->block_bitmap, |
89 | (unsigned long long)input->inode_table, itend - 1); | 88 | (unsigned long long)input->inode_table, itend - 1); |
90 | else if (inside(input->inode_bitmap, input->inode_table, itend)) | 89 | else if (inside(input->inode_bitmap, input->inode_table, itend)) |
91 | ext4_warning(sb, __FUNCTION__, | 90 | ext4_warning(sb, __func__, |
92 | "Inode bitmap (%llu) in inode table (%llu-%llu)", | 91 | "Inode bitmap (%llu) in inode table (%llu-%llu)", |
93 | (unsigned long long)input->inode_bitmap, | 92 | (unsigned long long)input->inode_bitmap, |
94 | (unsigned long long)input->inode_table, itend - 1); | 93 | (unsigned long long)input->inode_table, itend - 1); |
95 | else if (inside(input->block_bitmap, start, metaend)) | 94 | else if (inside(input->block_bitmap, start, metaend)) |
96 | ext4_warning(sb, __FUNCTION__, | 95 | ext4_warning(sb, __func__, |
97 | "Block bitmap (%llu) in GDT table" | 96 | "Block bitmap (%llu) in GDT table" |
98 | " (%llu-%llu)", | 97 | " (%llu-%llu)", |
99 | (unsigned long long)input->block_bitmap, | 98 | (unsigned long long)input->block_bitmap, |
100 | start, metaend - 1); | 99 | start, metaend - 1); |
101 | else if (inside(input->inode_bitmap, start, metaend)) | 100 | else if (inside(input->inode_bitmap, start, metaend)) |
102 | ext4_warning(sb, __FUNCTION__, | 101 | ext4_warning(sb, __func__, |
103 | "Inode bitmap (%llu) in GDT table" | 102 | "Inode bitmap (%llu) in GDT table" |
104 | " (%llu-%llu)", | 103 | " (%llu-%llu)", |
105 | (unsigned long long)input->inode_bitmap, | 104 | (unsigned long long)input->inode_bitmap, |
106 | start, metaend - 1); | 105 | start, metaend - 1); |
107 | else if (inside(input->inode_table, start, metaend) || | 106 | else if (inside(input->inode_table, start, metaend) || |
108 | inside(itend - 1, start, metaend)) | 107 | inside(itend - 1, start, metaend)) |
109 | ext4_warning(sb, __FUNCTION__, | 108 | ext4_warning(sb, __func__, |
110 | "Inode table (%llu-%llu) overlaps" | 109 | "Inode table (%llu-%llu) overlaps" |
111 | "GDT table (%llu-%llu)", | 110 | "GDT table (%llu-%llu)", |
112 | (unsigned long long)input->inode_table, | 111 | (unsigned long long)input->inode_table, |
@@ -368,7 +367,7 @@ static int verify_reserved_gdb(struct super_block *sb, | |||
368 | while ((grp = ext4_list_backups(sb, &three, &five, &seven)) < end) { | 367 | while ((grp = ext4_list_backups(sb, &three, &five, &seven)) < end) { |
369 | if (le32_to_cpu(*p++) != | 368 | if (le32_to_cpu(*p++) != |
370 | grp * EXT4_BLOCKS_PER_GROUP(sb) + blk){ | 369 | grp * EXT4_BLOCKS_PER_GROUP(sb) + blk){ |
371 | ext4_warning(sb, __FUNCTION__, | 370 | ext4_warning(sb, __func__, |
372 | "reserved GDT %llu" | 371 | "reserved GDT %llu" |
373 | " missing grp %d (%llu)", | 372 | " missing grp %d (%llu)", |
374 | blk, grp, | 373 | blk, grp, |
@@ -424,7 +423,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode, | |||
424 | */ | 423 | */ |
425 | if (EXT4_SB(sb)->s_sbh->b_blocknr != | 424 | if (EXT4_SB(sb)->s_sbh->b_blocknr != |
426 | le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block)) { | 425 | le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block)) { |
427 | ext4_warning(sb, __FUNCTION__, | 426 | ext4_warning(sb, __func__, |
428 | "won't resize using backup superblock at %llu", | 427 | "won't resize using backup superblock at %llu", |
429 | (unsigned long long)EXT4_SB(sb)->s_sbh->b_blocknr); | 428 | (unsigned long long)EXT4_SB(sb)->s_sbh->b_blocknr); |
430 | return -EPERM; | 429 | return -EPERM; |
@@ -448,7 +447,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode, | |||
448 | 447 | ||
449 | data = (__le32 *)dind->b_data; | 448 | data = (__le32 *)dind->b_data; |
450 | if (le32_to_cpu(data[gdb_num % EXT4_ADDR_PER_BLOCK(sb)]) != gdblock) { | 449 | if (le32_to_cpu(data[gdb_num % EXT4_ADDR_PER_BLOCK(sb)]) != gdblock) { |
451 | ext4_warning(sb, __FUNCTION__, | 450 | ext4_warning(sb, __func__, |
452 | "new group %u GDT block %llu not reserved", | 451 | "new group %u GDT block %llu not reserved", |
453 | input->group, gdblock); | 452 | input->group, gdblock); |
454 | err = -EINVAL; | 453 | err = -EINVAL; |
@@ -469,10 +468,10 @@ static int add_new_gdb(handle_t *handle, struct inode *inode, | |||
469 | goto exit_dindj; | 468 | goto exit_dindj; |
470 | 469 | ||
471 | n_group_desc = kmalloc((gdb_num + 1) * sizeof(struct buffer_head *), | 470 | n_group_desc = kmalloc((gdb_num + 1) * sizeof(struct buffer_head *), |
472 | GFP_KERNEL); | 471 | GFP_NOFS); |
473 | if (!n_group_desc) { | 472 | if (!n_group_desc) { |
474 | err = -ENOMEM; | 473 | err = -ENOMEM; |
475 | ext4_warning (sb, __FUNCTION__, | 474 | ext4_warning(sb, __func__, |
476 | "not enough memory for %lu groups", gdb_num + 1); | 475 | "not enough memory for %lu groups", gdb_num + 1); |
477 | goto exit_inode; | 476 | goto exit_inode; |
478 | } | 477 | } |
@@ -502,8 +501,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode, | |||
502 | EXT4_SB(sb)->s_gdb_count++; | 501 | EXT4_SB(sb)->s_gdb_count++; |
503 | kfree(o_group_desc); | 502 | kfree(o_group_desc); |
504 | 503 | ||
505 | es->s_reserved_gdt_blocks = | 504 | le16_add_cpu(&es->s_reserved_gdt_blocks, -1); |
506 | cpu_to_le16(le16_to_cpu(es->s_reserved_gdt_blocks) - 1); | ||
507 | ext4_journal_dirty_metadata(handle, EXT4_SB(sb)->s_sbh); | 505 | ext4_journal_dirty_metadata(handle, EXT4_SB(sb)->s_sbh); |
508 | 506 | ||
509 | return 0; | 507 | return 0; |
@@ -553,7 +551,7 @@ static int reserve_backup_gdb(handle_t *handle, struct inode *inode, | |||
553 | int res, i; | 551 | int res, i; |
554 | int err; | 552 | int err; |
555 | 553 | ||
556 | primary = kmalloc(reserved_gdb * sizeof(*primary), GFP_KERNEL); | 554 | primary = kmalloc(reserved_gdb * sizeof(*primary), GFP_NOFS); |
557 | if (!primary) | 555 | if (!primary) |
558 | return -ENOMEM; | 556 | return -ENOMEM; |
559 | 557 | ||
@@ -571,7 +569,7 @@ static int reserve_backup_gdb(handle_t *handle, struct inode *inode, | |||
571 | /* Get each reserved primary GDT block and verify it holds backups */ | 569 | /* Get each reserved primary GDT block and verify it holds backups */ |
572 | for (res = 0; res < reserved_gdb; res++, blk++) { | 570 | for (res = 0; res < reserved_gdb; res++, blk++) { |
573 | if (le32_to_cpu(*data) != blk) { | 571 | if (le32_to_cpu(*data) != blk) { |
574 | ext4_warning(sb, __FUNCTION__, | 572 | ext4_warning(sb, __func__, |
575 | "reserved block %llu" | 573 | "reserved block %llu" |
576 | " not at offset %ld", | 574 | " not at offset %ld", |
577 | blk, | 575 | blk, |
@@ -715,7 +713,7 @@ static void update_backups(struct super_block *sb, | |||
715 | */ | 713 | */ |
716 | exit_err: | 714 | exit_err: |
717 | if (err) { | 715 | if (err) { |
718 | ext4_warning(sb, __FUNCTION__, | 716 | ext4_warning(sb, __func__, |
719 | "can't update backup for group %lu (err %d), " | 717 | "can't update backup for group %lu (err %d), " |
720 | "forcing fsck on next reboot", group, err); | 718 | "forcing fsck on next reboot", group, err); |
721 | sbi->s_mount_state &= ~EXT4_VALID_FS; | 719 | sbi->s_mount_state &= ~EXT4_VALID_FS; |
@@ -755,33 +753,33 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input) | |||
755 | 753 | ||
756 | if (gdb_off == 0 && !EXT4_HAS_RO_COMPAT_FEATURE(sb, | 754 | if (gdb_off == 0 && !EXT4_HAS_RO_COMPAT_FEATURE(sb, |
757 | EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER)) { | 755 | EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER)) { |
758 | ext4_warning(sb, __FUNCTION__, | 756 | ext4_warning(sb, __func__, |
759 | "Can't resize non-sparse filesystem further"); | 757 | "Can't resize non-sparse filesystem further"); |
760 | return -EPERM; | 758 | return -EPERM; |
761 | } | 759 | } |
762 | 760 | ||
763 | if (ext4_blocks_count(es) + input->blocks_count < | 761 | if (ext4_blocks_count(es) + input->blocks_count < |
764 | ext4_blocks_count(es)) { | 762 | ext4_blocks_count(es)) { |
765 | ext4_warning(sb, __FUNCTION__, "blocks_count overflow\n"); | 763 | ext4_warning(sb, __func__, "blocks_count overflow\n"); |
766 | return -EINVAL; | 764 | return -EINVAL; |
767 | } | 765 | } |
768 | 766 | ||
769 | if (le32_to_cpu(es->s_inodes_count) + EXT4_INODES_PER_GROUP(sb) < | 767 | if (le32_to_cpu(es->s_inodes_count) + EXT4_INODES_PER_GROUP(sb) < |
770 | le32_to_cpu(es->s_inodes_count)) { | 768 | le32_to_cpu(es->s_inodes_count)) { |
771 | ext4_warning(sb, __FUNCTION__, "inodes_count overflow\n"); | 769 | ext4_warning(sb, __func__, "inodes_count overflow\n"); |
772 | return -EINVAL; | 770 | return -EINVAL; |
773 | } | 771 | } |
774 | 772 | ||
775 | if (reserved_gdb || gdb_off == 0) { | 773 | if (reserved_gdb || gdb_off == 0) { |
776 | if (!EXT4_HAS_COMPAT_FEATURE(sb, | 774 | if (!EXT4_HAS_COMPAT_FEATURE(sb, |
777 | EXT4_FEATURE_COMPAT_RESIZE_INODE)){ | 775 | EXT4_FEATURE_COMPAT_RESIZE_INODE)){ |
778 | ext4_warning(sb, __FUNCTION__, | 776 | ext4_warning(sb, __func__, |
779 | "No reserved GDT blocks, can't resize"); | 777 | "No reserved GDT blocks, can't resize"); |
780 | return -EPERM; | 778 | return -EPERM; |
781 | } | 779 | } |
782 | inode = ext4_iget(sb, EXT4_RESIZE_INO); | 780 | inode = ext4_iget(sb, EXT4_RESIZE_INO); |
783 | if (IS_ERR(inode)) { | 781 | if (IS_ERR(inode)) { |
784 | ext4_warning(sb, __FUNCTION__, | 782 | ext4_warning(sb, __func__, |
785 | "Error opening resize inode"); | 783 | "Error opening resize inode"); |
786 | return PTR_ERR(inode); | 784 | return PTR_ERR(inode); |
787 | } | 785 | } |
@@ -810,7 +808,7 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input) | |||
810 | 808 | ||
811 | lock_super(sb); | 809 | lock_super(sb); |
812 | if (input->group != sbi->s_groups_count) { | 810 | if (input->group != sbi->s_groups_count) { |
813 | ext4_warning(sb, __FUNCTION__, | 811 | ext4_warning(sb, __func__, |
814 | "multiple resizers run on filesystem!"); | 812 | "multiple resizers run on filesystem!"); |
815 | err = -EBUSY; | 813 | err = -EBUSY; |
816 | goto exit_journal; | 814 | goto exit_journal; |
@@ -877,8 +875,7 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input) | |||
877 | */ | 875 | */ |
878 | ext4_blocks_count_set(es, ext4_blocks_count(es) + | 876 | ext4_blocks_count_set(es, ext4_blocks_count(es) + |
879 | input->blocks_count); | 877 | input->blocks_count); |
880 | es->s_inodes_count = cpu_to_le32(le32_to_cpu(es->s_inodes_count) + | 878 | le32_add_cpu(&es->s_inodes_count, EXT4_INODES_PER_GROUP(sb)); |
881 | EXT4_INODES_PER_GROUP(sb)); | ||
882 | 879 | ||
883 | /* | 880 | /* |
884 | * We need to protect s_groups_count against other CPUs seeing | 881 | * We need to protect s_groups_count against other CPUs seeing |
@@ -977,13 +974,13 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es, | |||
977 | " too large to resize to %llu blocks safely\n", | 974 | " too large to resize to %llu blocks safely\n", |
978 | sb->s_id, n_blocks_count); | 975 | sb->s_id, n_blocks_count); |
979 | if (sizeof(sector_t) < 8) | 976 | if (sizeof(sector_t) < 8) |
980 | ext4_warning(sb, __FUNCTION__, | 977 | ext4_warning(sb, __func__, |
981 | "CONFIG_LBD not enabled\n"); | 978 | "CONFIG_LBD not enabled\n"); |
982 | return -EINVAL; | 979 | return -EINVAL; |
983 | } | 980 | } |
984 | 981 | ||
985 | if (n_blocks_count < o_blocks_count) { | 982 | if (n_blocks_count < o_blocks_count) { |
986 | ext4_warning(sb, __FUNCTION__, | 983 | ext4_warning(sb, __func__, |
987 | "can't shrink FS - resize aborted"); | 984 | "can't shrink FS - resize aborted"); |
988 | return -EBUSY; | 985 | return -EBUSY; |
989 | } | 986 | } |
@@ -992,7 +989,7 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es, | |||
992 | ext4_get_group_no_and_offset(sb, o_blocks_count, NULL, &last); | 989 | ext4_get_group_no_and_offset(sb, o_blocks_count, NULL, &last); |
993 | 990 | ||
994 | if (last == 0) { | 991 | if (last == 0) { |
995 | ext4_warning(sb, __FUNCTION__, | 992 | ext4_warning(sb, __func__, |
996 | "need to use ext2online to resize further"); | 993 | "need to use ext2online to resize further"); |
997 | return -EPERM; | 994 | return -EPERM; |
998 | } | 995 | } |
@@ -1000,7 +997,7 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es, | |||
1000 | add = EXT4_BLOCKS_PER_GROUP(sb) - last; | 997 | add = EXT4_BLOCKS_PER_GROUP(sb) - last; |
1001 | 998 | ||
1002 | if (o_blocks_count + add < o_blocks_count) { | 999 | if (o_blocks_count + add < o_blocks_count) { |
1003 | ext4_warning(sb, __FUNCTION__, "blocks_count overflow"); | 1000 | ext4_warning(sb, __func__, "blocks_count overflow"); |
1004 | return -EINVAL; | 1001 | return -EINVAL; |
1005 | } | 1002 | } |
1006 | 1003 | ||
@@ -1008,7 +1005,7 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es, | |||
1008 | add = n_blocks_count - o_blocks_count; | 1005 | add = n_blocks_count - o_blocks_count; |
1009 | 1006 | ||
1010 | if (o_blocks_count + add < n_blocks_count) | 1007 | if (o_blocks_count + add < n_blocks_count) |
1011 | ext4_warning(sb, __FUNCTION__, | 1008 | ext4_warning(sb, __func__, |
1012 | "will only finish group (%llu" | 1009 | "will only finish group (%llu" |
1013 | " blocks, %u new)", | 1010 | " blocks, %u new)", |
1014 | o_blocks_count + add, add); | 1011 | o_blocks_count + add, add); |
@@ -1016,7 +1013,7 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es, | |||
1016 | /* See if the device is actually as big as what was requested */ | 1013 | /* See if the device is actually as big as what was requested */ |
1017 | bh = sb_bread(sb, o_blocks_count + add -1); | 1014 | bh = sb_bread(sb, o_blocks_count + add -1); |
1018 | if (!bh) { | 1015 | if (!bh) { |
1019 | ext4_warning(sb, __FUNCTION__, | 1016 | ext4_warning(sb, __func__, |
1020 | "can't read last block, resize aborted"); | 1017 | "can't read last block, resize aborted"); |
1021 | return -ENOSPC; | 1018 | return -ENOSPC; |
1022 | } | 1019 | } |
@@ -1028,13 +1025,13 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es, | |||
1028 | handle = ext4_journal_start_sb(sb, 3); | 1025 | handle = ext4_journal_start_sb(sb, 3); |
1029 | if (IS_ERR(handle)) { | 1026 | if (IS_ERR(handle)) { |
1030 | err = PTR_ERR(handle); | 1027 | err = PTR_ERR(handle); |
1031 | ext4_warning(sb, __FUNCTION__, "error %d on journal start",err); | 1028 | ext4_warning(sb, __func__, "error %d on journal start", err); |
1032 | goto exit_put; | 1029 | goto exit_put; |
1033 | } | 1030 | } |
1034 | 1031 | ||
1035 | lock_super(sb); | 1032 | lock_super(sb); |
1036 | if (o_blocks_count != ext4_blocks_count(es)) { | 1033 | if (o_blocks_count != ext4_blocks_count(es)) { |
1037 | ext4_warning(sb, __FUNCTION__, | 1034 | ext4_warning(sb, __func__, |
1038 | "multiple resizers run on filesystem!"); | 1035 | "multiple resizers run on filesystem!"); |
1039 | unlock_super(sb); | 1036 | unlock_super(sb); |
1040 | ext4_journal_stop(handle); | 1037 | ext4_journal_stop(handle); |
@@ -1044,7 +1041,7 @@ int ext4_group_extend(struct super_block *sb, struct ext4_super_block *es, | |||
1044 | 1041 | ||
1045 | if ((err = ext4_journal_get_write_access(handle, | 1042 | if ((err = ext4_journal_get_write_access(handle, |
1046 | EXT4_SB(sb)->s_sbh))) { | 1043 | EXT4_SB(sb)->s_sbh))) { |
1047 | ext4_warning(sb, __FUNCTION__, | 1044 | ext4_warning(sb, __func__, |
1048 | "error %d on journal write access", err); | 1045 | "error %d on journal write access", err); |
1049 | unlock_super(sb); | 1046 | unlock_super(sb); |
1050 | ext4_journal_stop(handle); | 1047 | ext4_journal_stop(handle); |