diff options
| author | Josef Bacik <jbacik@redhat.com> | 2008-04-29 22:02:02 -0400 |
|---|---|---|
| committer | Theodore Ts'o <tytso@mit.edu> | 2008-04-29 22:02:02 -0400 |
| commit | 216553c4b7f3e3e2beb4981cddca9b2027523928 (patch) | |
| tree | aefd413c05b078c6e8cf702956c79548943b5023 | |
| parent | 2887df139c40512cdc147d1a84d95d4f3d261bd1 (diff) | |
ext4: fix wrong gfp type under transaction
This fixes the allocations with GFP_KERNEL while under a transaction problems
in ext4. This patch is the same as its ext3 counterpart, just switches these
to GFP_NOFS.
Signed-off-by: Josef Bacik <jbacik@redhat.com>
Cc: <linux-ext4@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Mingming Cao <cmm@us.ibm.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
| -rw-r--r-- | fs/ext4/acl.c | 8 | ||||
| -rw-r--r-- | fs/ext4/extents.c | 2 | ||||
| -rw-r--r-- | fs/ext4/resize.c | 4 | ||||
| -rw-r--r-- | fs/ext4/xattr.c | 4 |
4 files changed, 9 insertions, 9 deletions
diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c index a8bae8cd1d5d..cc92624a46a2 100644 --- a/fs/ext4/acl.c +++ b/fs/ext4/acl.c | |||
| @@ -37,7 +37,7 @@ ext4_acl_from_disk(const void *value, size_t size) | |||
| 37 | return ERR_PTR(-EINVAL); | 37 | return ERR_PTR(-EINVAL); |
| 38 | if (count == 0) | 38 | if (count == 0) |
| 39 | return NULL; | 39 | return NULL; |
| 40 | acl = posix_acl_alloc(count, GFP_KERNEL); | 40 | acl = posix_acl_alloc(count, GFP_NOFS); |
| 41 | if (!acl) | 41 | if (!acl) |
| 42 | return ERR_PTR(-ENOMEM); | 42 | return ERR_PTR(-ENOMEM); |
| 43 | for (n=0; n < count; n++) { | 43 | for (n=0; n < count; n++) { |
| @@ -91,7 +91,7 @@ ext4_acl_to_disk(const struct posix_acl *acl, size_t *size) | |||
| 91 | 91 | ||
| 92 | *size = ext4_acl_size(acl->a_count); | 92 | *size = ext4_acl_size(acl->a_count); |
| 93 | ext_acl = kmalloc(sizeof(ext4_acl_header) + acl->a_count * | 93 | ext_acl = kmalloc(sizeof(ext4_acl_header) + acl->a_count * |
| 94 | sizeof(ext4_acl_entry), GFP_KERNEL); | 94 | sizeof(ext4_acl_entry), GFP_NOFS); |
| 95 | if (!ext_acl) | 95 | if (!ext_acl) |
| 96 | return ERR_PTR(-ENOMEM); | 96 | return ERR_PTR(-ENOMEM); |
| 97 | ext_acl->a_version = cpu_to_le32(EXT4_ACL_VERSION); | 97 | ext_acl->a_version = cpu_to_le32(EXT4_ACL_VERSION); |
| @@ -187,7 +187,7 @@ ext4_get_acl(struct inode *inode, int type) | |||
| 187 | } | 187 | } |
| 188 | retval = ext4_xattr_get(inode, name_index, "", NULL, 0); | 188 | retval = ext4_xattr_get(inode, name_index, "", NULL, 0); |
| 189 | if (retval > 0) { | 189 | if (retval > 0) { |
| 190 | value = kmalloc(retval, GFP_KERNEL); | 190 | value = kmalloc(retval, GFP_NOFS); |
| 191 | if (!value) | 191 | if (!value) |
| 192 | return ERR_PTR(-ENOMEM); | 192 | return ERR_PTR(-ENOMEM); |
| 193 | retval = ext4_xattr_get(inode, name_index, "", value, retval); | 193 | retval = ext4_xattr_get(inode, name_index, "", value, retval); |
| @@ -335,7 +335,7 @@ ext4_init_acl(handle_t *handle, struct inode *inode, struct inode *dir) | |||
| 335 | if (error) | 335 | if (error) |
| 336 | goto cleanup; | 336 | goto cleanup; |
| 337 | } | 337 | } |
| 338 | clone = posix_acl_clone(acl, GFP_KERNEL); | 338 | clone = posix_acl_clone(acl, GFP_NOFS); |
| 339 | error = -ENOMEM; | 339 | error = -ENOMEM; |
| 340 | if (!clone) | 340 | if (!clone) |
| 341 | goto cleanup; | 341 | goto cleanup; |
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 1c8aab4dad23..4e6afc812fda 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c | |||
| @@ -1977,7 +1977,7 @@ static int ext4_ext_remove_space(struct inode *inode, ext4_lblk_t start) | |||
| 1977 | * We start scanning from right side, freeing all the blocks | 1977 | * We start scanning from right side, freeing all the blocks |
| 1978 | * after i_size and walking into the tree depth-wise. | 1978 | * after i_size and walking into the tree depth-wise. |
| 1979 | */ | 1979 | */ |
| 1980 | path = kzalloc(sizeof(struct ext4_ext_path) * (depth + 1), GFP_KERNEL); | 1980 | path = kzalloc(sizeof(struct ext4_ext_path) * (depth + 1), GFP_NOFS); |
| 1981 | if (path == NULL) { | 1981 | if (path == NULL) { |
| 1982 | ext4_journal_stop(handle); | 1982 | ext4_journal_stop(handle); |
| 1983 | return -ENOMEM; | 1983 | return -ENOMEM; |
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index 3e0f5d06f3ee..0ca63dcbdf88 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c | |||
| @@ -469,7 +469,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode, | |||
| 469 | goto exit_dindj; | 469 | goto exit_dindj; |
| 470 | 470 | ||
| 471 | n_group_desc = kmalloc((gdb_num + 1) * sizeof(struct buffer_head *), | 471 | n_group_desc = kmalloc((gdb_num + 1) * sizeof(struct buffer_head *), |
| 472 | GFP_KERNEL); | 472 | GFP_NOFS); |
| 473 | if (!n_group_desc) { | 473 | if (!n_group_desc) { |
| 474 | err = -ENOMEM; | 474 | err = -ENOMEM; |
| 475 | ext4_warning(sb, __func__, | 475 | ext4_warning(sb, __func__, |
| @@ -552,7 +552,7 @@ static int reserve_backup_gdb(handle_t *handle, struct inode *inode, | |||
| 552 | int res, i; | 552 | int res, i; |
| 553 | int err; | 553 | int err; |
| 554 | 554 | ||
| 555 | primary = kmalloc(reserved_gdb * sizeof(*primary), GFP_KERNEL); | 555 | primary = kmalloc(reserved_gdb * sizeof(*primary), GFP_NOFS); |
| 556 | if (!primary) | 556 | if (!primary) |
| 557 | return -ENOMEM; | 557 | return -ENOMEM; |
| 558 | 558 | ||
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index f56598df6880..df4810d5a387 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c | |||
| @@ -739,7 +739,7 @@ ext4_xattr_block_set(handle_t *handle, struct inode *inode, | |||
| 739 | ce = NULL; | 739 | ce = NULL; |
| 740 | } | 740 | } |
| 741 | ea_bdebug(bs->bh, "cloning"); | 741 | ea_bdebug(bs->bh, "cloning"); |
| 742 | s->base = kmalloc(bs->bh->b_size, GFP_KERNEL); | 742 | s->base = kmalloc(bs->bh->b_size, GFP_NOFS); |
| 743 | error = -ENOMEM; | 743 | error = -ENOMEM; |
| 744 | if (s->base == NULL) | 744 | if (s->base == NULL) |
| 745 | goto cleanup; | 745 | goto cleanup; |
| @@ -751,7 +751,7 @@ ext4_xattr_block_set(handle_t *handle, struct inode *inode, | |||
| 751 | } | 751 | } |
| 752 | } else { | 752 | } else { |
| 753 | /* Allocate a buffer where we construct the new block. */ | 753 | /* Allocate a buffer where we construct the new block. */ |
| 754 | s->base = kzalloc(sb->s_blocksize, GFP_KERNEL); | 754 | s->base = kzalloc(sb->s_blocksize, GFP_NOFS); |
| 755 | /* assert(header == s->base) */ | 755 | /* assert(header == s->base) */ |
| 756 | error = -ENOMEM; | 756 | error = -ENOMEM; |
| 757 | if (s->base == NULL) | 757 | if (s->base == NULL) |
