diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 65c9586b2952f90ab47b6f31745da7472b3f3588..3f3becd46362d5a0ce85d6e090b2906035dd687b 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -1861,8 +1861,13 @@ int f2fs_do_write_data_page(struct f2fs_io_info *fio) if (fio->need_lock == LOCK_REQ) f2fs_unlock_op(fio->sbi); err = f2fs_inplace_write_data(fio); - if (err && PageWriteback(page)) - end_page_writeback(page); + if (err) { + if (f2fs_encrypted_file(inode)) + fscrypt_pullback_bio_page(&fio->encrypted_page, + true); + if (PageWriteback(page)) + end_page_writeback(page); + } trace_f2fs_do_write_data_page(fio->page, IPU); set_inode_flag(inode, FI_UPDATE_WRITE); return err;