From: Chao Yu <yuchao0@huawei.com>
To: Yunlei He <heyunlei@huawei.com>,
linux-f2fs-devel@lists.sourceforge.net, jaegeuk@kernel.org
Cc: heyunlei@huwei.com
Subject: Re: [PATCH v2] f2fs:return directly if block has been removed from the victim
Date: Wed, 2 Nov 2016 19:54:15 +0800 [thread overview]
Message-ID: <9013f0ff-b341-e07e-d165-aee1c8acc4dd@huawei.com> (raw)
In-Reply-To: <20161102104150.29358-1-heyunlei@huawei.com>
On 2016/11/2 18:41, Yunlei He wrote:
> If one block has been to written to a new place, just return
> in move data process. This patch check it again with holding
> page lock.
>
> Signed-off-by: Yunlei He <heyunlei@huawei.com>
> ---
> fs/f2fs/gc.c | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index 9c18917..131e0fe 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -544,7 +544,8 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
> return true;
> }
>
> -static void move_encrypted_block(struct inode *inode, block_t bidx)
> +static void move_encrypted_block(struct inode *inode, block_t bidx,
> + unsigned int segno, int off)
> {
> struct f2fs_io_info fio = {
> .sbi = F2FS_I_SB(inode),
> @@ -579,6 +580,9 @@ static void move_encrypted_block(struct inode *inode, block_t bidx)
> * don't cache encrypted data into meta inode until previous dirty
> * data were writebacked to avoid racing between GC and flush.
> */
> + if (!check_valid_map(F2FS_I_SB(inode), segno, off))
> + goto out;
> +
> f2fs_wait_on_page_writeback(page, DATA, true);
>
> get_node_info(fio.sbi, dn.nid, &ni);
> @@ -645,7 +649,8 @@ static void move_encrypted_block(struct inode *inode, block_t bidx)
> f2fs_put_page(page, 1);
> }
>
> -static void move_data_page(struct inode *inode, block_t bidx, int gc_type)
> +static void move_data_page(struct inode *inode, block_t bidx, int gc_type,
> + unsigned int segno, int off)
> {
> struct page *page;
>
> @@ -670,6 +675,9 @@ static void move_data_page(struct inode *inode, block_t bidx, int gc_type)
> bool is_dirty = PageDirty(page);
> int err;
>
> + if (!check_valid_map(F2FS_I_SB(inode), segno, off))
Better to do detection after get_lock_data_page?
Thanks,
> + goto out;
> +
> retry:
> set_page_dirty(page);
> f2fs_wait_on_page_writeback(page, DATA, true);
> @@ -796,9 +804,9 @@ static void gc_data_segment(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
> start_bidx = start_bidx_of_node(nofs, inode)
> + ofs_in_node;
> if (f2fs_encrypted_inode(inode) && S_ISREG(inode->i_mode))
> - move_encrypted_block(inode, start_bidx);
> + move_encrypted_block(inode, start_bidx, segno, off);
> else
> - move_data_page(inode, start_bidx, gc_type);
> + move_data_page(inode, start_bidx, gc_type, segno, off);
>
> if (locked) {
> up_write(&fi->dio_rwsem[WRITE]);
>
------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
next prev parent reply other threads:[~2016-11-02 11:54 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-02 10:41 [PATCH v2] f2fs:return directly if block has been removed from the victim Yunlei He
2016-11-02 11:54 ` Chao Yu [this message]
2016-11-02 18:05 ` Jaegeuk Kim
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=9013f0ff-b341-e07e-d165-aee1c8acc4dd@huawei.com \
--to=yuchao0@huawei.com \
--cc=heyunlei@huawei.com \
--cc=heyunlei@huwei.com \
--cc=jaegeuk@kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.