linux/fs/f2fs
Chao Yu af033b2aa8 f2fs: guarantee journalled quota data by checkpoint
For journalled quota mode, let checkpoint to flush dquot dirty data
and quota file data to guarntee persistence of all quota sysfile in
last checkpoint, by this way, we can avoid corrupting quota sysfile
when encountering SPO.

The implementation is as below:

1. add a global state SBI_QUOTA_NEED_FLUSH to indicate that there is
cached dquot metadata changes in quota subsystem, and later checkpoint
should:
 a) flush dquot metadata into quota file.
 b) flush quota file to storage to keep file usage be consistent.

2. add a global state SBI_QUOTA_NEED_REPAIR to indicate that quota
operation failed due to -EIO or -ENOSPC, so later,
 a) checkpoint will skip syncing dquot metadata.
 b) CP_QUOTA_NEED_FSCK_FLAG will be set in last cp pack to give a
    hint for fsck repairing.

3. add a global state SBI_QUOTA_SKIP_FLUSH, in checkpoint, if quota
data updating is very heavy, it may cause hungtask in block_operation().
To avoid this, if our retry time exceed threshold, let's just skip
flushing and retry in next checkpoint().

Signed-off-by: Weichao Guo <guoweichao@huawei.com>
Signed-off-by: Chao Yu <yuchao0@huawei.com>
[Jaegeuk Kim: avoid warnings and set fsck flag]
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-10-22 17:54:47 -07:00
..
acl.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
acl.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
checkpoint.c f2fs: guarantee journalled quota data by checkpoint 2018-10-22 17:54:47 -07:00
data.c f2fs: guarantee journalled quota data by checkpoint 2018-10-22 17:54:47 -07:00
debug.c f2fs: account read IOs and use IO counts for is_idle 2018-10-22 17:54:46 -07:00
dir.c f2fs: fix to spread clear_cold_data() 2018-10-22 17:54:46 -07:00
extent_cache.c f2fs: use rb_*_cached friends 2018-10-16 09:36:59 -07:00
f2fs.h f2fs: guarantee journalled quota data by checkpoint 2018-10-22 17:54:47 -07:00
file.c f2fs: guarantee journalled quota data by checkpoint 2018-10-22 17:54:47 -07:00
gc.c f2fs: submit cached bio to avoid endless PageWriteback 2018-10-16 09:36:59 -07:00
gc.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
hash.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
inline.c f2fs: guarantee journalled quota data by checkpoint 2018-10-22 17:54:47 -07:00
inode.c f2fs: guarantee journalled quota data by checkpoint 2018-10-22 17:54:47 -07:00
Kconfig fs/*/Kconfig: drop links to 404-compliant http://acl.bestbits.at 2018-01-01 12:45:37 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
namei.c f2fs: guarantee journalled quota data by checkpoint 2018-10-22 17:54:47 -07:00
node.c f2fs: remove unneeded disable_nat_bits() 2018-10-16 09:36:59 -07:00
node.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
recovery.c f2fs: guarantee journalled quota data by checkpoint 2018-10-22 17:54:47 -07:00
segment.c f2fs: fix data corruption issue with hardware encryption 2018-10-22 17:54:47 -07:00
segment.h f2fs: checkpoint disabling 2018-10-16 09:36:39 -07:00
shrinker.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
super.c f2fs: guarantee journalled quota data by checkpoint 2018-10-22 17:54:47 -07:00
sysfs.c f2fs: support superblock checksum 2018-09-30 18:34:18 -07:00
trace.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
trace.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
xattr.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
xattr.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00