From: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
To: Jaegeuk Kim <jaegeuk@kernel.org>, Chao Yu <yuchao0@huawei.com>,
linux-f2fs-devel@lists.sourceforge.net
Cc: Damien Le Moal <Damien.LeMoal@wdc.com>
Subject: [f2fs-dev] [PATCH v4 0/2] f2fs: Check write pointers of zoned block devices
Date: Mon, 2 Dec 2019 18:40:41 +0900 [thread overview]
Message-ID: <20191202094043.892258-1-shinichiro.kawasaki@wdc.com> (raw)
On sudden f2fs shutdown, zoned block device status and f2fs meta data can be
inconsistent. When f2fs shutdown happens during write operations, write pointers
on the device go forward but the f2fs meta data does not reflect the write
pointer progress. This inconsistency will eventually cause "Unaligned write
command" error when restarting write operation after the next mount.
This error is observed with xfstests test case generic/388, which enforces
sudden shutdown during write operation and checks the file system recovery.
This patch series adds a feature to f2fs to check and fix the write pointer
consistency when zoned block devices get mounted. Per discussion on the list,
implement two checks: a check for open zones and a check for non-open zones.
The first patch add the check for open zones that current segments point to.
Check write pointer consistency with current segment positions recorded in CP,
and if they are inconsistent, assign a new zone to the current segment. When
fsync data exists, check and fix the consistency after fsync data recovery.
The second patch adds the check for non-open zones that current segments do not
point to. Compare write pointers with valid block maps in SIT, and if they are
inconsistent, report the failure or fix by resetting the write pointer.
Thank goes to Chao Yu for the detailed discussion on the list.
Changes from v3:
* Rebased to linux master tip and fixed conflicts for blkdev_report_zones()
* Discard zones with write pointers not at zone start but without valid blocks,
resetting the write pointers instead of fsck run by users
* Improved readability of open-zone's check condition and indent with tab
Changes from v2:
* 1st patch: Fix write pointer in SBI_POR_DOING guard
Removed __set_inuse() and f2fs_stop_checkpoint()
* 2nd patch: Reversed bitmap search and removed __set_inuse()
Changed condition for disable_roll_forward/norecovery mount options
Changes from v1:
* 2nd patch: Added check to ensure zones are in main segments
Shin'ichiro Kawasaki (2):
f2fs: Check write pointer consistency of open zones
f2fs: Check write pointer consistency of non-open zones
fs/f2fs/f2fs.h | 2 +
fs/f2fs/recovery.c | 20 +++-
fs/f2fs/segment.c | 257 +++++++++++++++++++++++++++++++++++++++++++++
fs/f2fs/super.c | 11 ++
4 files changed, 288 insertions(+), 2 deletions(-)
--
2.23.0
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next reply other threads:[~2019-12-02 9:41 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-02 9:40 Shin'ichiro Kawasaki [this message]
2019-12-02 9:40 ` [f2fs-dev] [PATCH v4 1/2] f2fs: Check write pointer consistency of open zones Shin'ichiro Kawasaki
2019-12-04 1:58 ` Chao Yu
2019-12-02 9:40 ` [f2fs-dev] [PATCH v4 2/2] f2fs: Check write pointer consistency of non-open zones Shin'ichiro Kawasaki
2019-12-09 2:04 ` Chao Yu
2019-12-09 7:28 ` Shinichiro Kawasaki
2019-12-09 9:36 ` Chao Yu
2019-12-09 10:52 ` Shinichiro Kawasaki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191202094043.892258-1-shinichiro.kawasaki@wdc.com \
--to=shinichiro.kawasaki@wdc.com \
--cc=Damien.LeMoal@wdc.com \
--cc=jaegeuk@kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=yuchao0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).