inject.f2fs: add members in inject_cp
The following members are added to inject more fields in cp:
* next_blkaddr: inject fsync dnodes
An error is returned if no fsync dnode is found.
Furthermore, the injection is not supported on a zoned device. This
is because fsync dnodes must remains at the end of current warm node
segment, any dnode change causes all previous dnodes in the chain to
be updated out-of-place, and there may not have enough space left in
the curseg. To simplify the injection, it returns an error on the
zoned device.
An example of dnode chain shows:
[inject_cp: 608] [ 0] blkaddr:0x1204
[inject_cp: 608] [ 1] blkaddr:0x1205
[inject_cp: 608] [ 2] blkaddr:0x1206
[inject_cp: 608] [ 3] blkaddr:0x1207
[inject_cp: 608] [ 4] blkaddr:0x1208
[inject_cp: 608] [ 5] blkaddr:0x1209
[inject_cp: 608] [ 6] blkaddr:0x120a
[inject_cp: 608] [ 7] blkaddr:0x120b
[inject_cp: 608] [ 8] blkaddr:0x120c
[inject_cp: 608] [ 9] blkaddr:0x120d
where `0' indicates next free blkaddr of warm node curseg, thus
start blkaddr + next_blkoff of warm node curseg, which cannot be
injected. `1~9` indicate next_blkaddr in node_footer of dnodes in
the chain, which can be injected.
* alloc_type: inject curseg's alloc type
* crc: inject cp's checksum
* elapsed_time: inject cp's mount elapsed time
Signed-off-by: Sheng Yong <shengyong1@xiaomi.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
4 files changed