mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
f2fs: unset atomic/volatile flag in f2fs_release_file
The atomic/volatile operation should be done in pair of start and commit ioctl. For example, if a killed process remains open-ended atomic operation, we should drop its flag as well as its atomic data. Otherwise, if sqlite initiates another operation which doesn't require atomic writes, it will lose every data, since f2fs still treats with them as atomic writes; nobody will trigger its commit. Change-Id: Ic97f7d88a1158e2f21f4bd5447870ff578641fb3 Reported-by: Miao Xie <miaoxie@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
1282b71690
commit
2e84eaaee8
2 changed files with 4 additions and 3 deletions
|
@ -1293,6 +1293,7 @@ static int f2fs_release_file(struct inode *inode, struct file *filp)
|
|||
if (f2fs_is_atomic_file(inode))
|
||||
drop_inmem_pages(inode);
|
||||
if (f2fs_is_volatile_file(inode)) {
|
||||
clear_inode_flag(F2FS_I(inode), FI_VOLATILE_FILE);
|
||||
set_inode_flag(F2FS_I(inode), FI_DROP_CACHE);
|
||||
filemap_fdatawrite(inode->i_mapping);
|
||||
clear_inode_flag(F2FS_I(inode), FI_DROP_CACHE);
|
||||
|
@ -1476,10 +1477,8 @@ static int f2fs_ioc_abort_volatile_write(struct file *filp)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (f2fs_is_atomic_file(inode)) {
|
||||
clear_inode_flag(F2FS_I(inode), FI_ATOMIC_FILE);
|
||||
if (f2fs_is_atomic_file(inode))
|
||||
drop_inmem_pages(inode);
|
||||
}
|
||||
if (f2fs_is_volatile_file(inode)) {
|
||||
clear_inode_flag(F2FS_I(inode), FI_VOLATILE_FILE);
|
||||
ret = f2fs_sync_file(filp, 0, LLONG_MAX, 0);
|
||||
|
|
|
@ -298,6 +298,8 @@ void drop_inmem_pages(struct inode *inode)
|
|||
{
|
||||
struct f2fs_inode_info *fi = F2FS_I(inode);
|
||||
|
||||
clear_inode_flag(F2FS_I(inode), FI_ATOMIC_FILE);
|
||||
|
||||
mutex_lock(&fi->inmem_lock);
|
||||
__revoke_inmem_pages(inode, &fi->inmem_pages, true, false);
|
||||
mutex_unlock(&fi->inmem_lock);
|
||||
|
|
Loading…
Reference in a new issue