diff options
Diffstat (limited to 'fs/ext4/inline.c')
-rw-r--r-- | fs/ext4/inline.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c index bea662bd0ca6..3ea62695abce 100644 --- a/fs/ext4/inline.c +++ b/fs/ext4/inline.c | |||
@@ -594,6 +594,7 @@ retry: | |||
594 | if (ret) { | 594 | if (ret) { |
595 | unlock_page(page); | 595 | unlock_page(page); |
596 | page_cache_release(page); | 596 | page_cache_release(page); |
597 | page = NULL; | ||
597 | ext4_orphan_add(handle, inode); | 598 | ext4_orphan_add(handle, inode); |
598 | up_write(&EXT4_I(inode)->xattr_sem); | 599 | up_write(&EXT4_I(inode)->xattr_sem); |
599 | sem_held = 0; | 600 | sem_held = 0; |
@@ -613,7 +614,8 @@ retry: | |||
613 | if (ret == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) | 614 | if (ret == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) |
614 | goto retry; | 615 | goto retry; |
615 | 616 | ||
616 | block_commit_write(page, from, to); | 617 | if (page) |
618 | block_commit_write(page, from, to); | ||
617 | out: | 619 | out: |
618 | if (page) { | 620 | if (page) { |
619 | unlock_page(page); | 621 | unlock_page(page); |
@@ -1126,8 +1128,7 @@ static int ext4_finish_convert_inline_dir(handle_t *handle, | |||
1126 | memcpy((void *)de, buf + EXT4_INLINE_DOTDOT_SIZE, | 1128 | memcpy((void *)de, buf + EXT4_INLINE_DOTDOT_SIZE, |
1127 | inline_size - EXT4_INLINE_DOTDOT_SIZE); | 1129 | inline_size - EXT4_INLINE_DOTDOT_SIZE); |
1128 | 1130 | ||
1129 | if (EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, | 1131 | if (ext4_has_metadata_csum(inode->i_sb)) |
1130 | EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) | ||
1131 | csum_size = sizeof(struct ext4_dir_entry_tail); | 1132 | csum_size = sizeof(struct ext4_dir_entry_tail); |
1132 | 1133 | ||
1133 | inode->i_size = inode->i_sb->s_blocksize; | 1134 | inode->i_size = inode->i_sb->s_blocksize; |