From: Chao Yu <chao2.yu@samsung.com>
To: jaegeuk.kim@samsung.com
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [PATCH] f2fs: introduce a new direct_IO write path
Date: Thu, 19 Dec 2013 09:12:16 +0800 [thread overview]
Message-ID: <000901cefc57$775a6450$660f2cf0$@samsung.com> (raw)
In-Reply-To: <1387325521.2101.212.camel@kjgkr>
> -----Original Message-----
> From: Jaegeuk Kim [mailto:jaegeuk.kim@samsung.com]
> Sent: Wednesday, December 18, 2013 8:12 AM
> To: linux-fsdevel@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net
> Subject: Re: [f2fs-dev] [PATCH] f2fs: introduce a new direct_IO write path
>
> Change log from v1:
> o fix NOSPC error handling
>
> >From b8511a74fe98b67247a9feeed58441e8f5ffd705 Mon Sep 17 00:00:00 2001
> From: Jaegeuk Kim <jaegeuk.kim@samsung.com>
> Date: Mon, 16 Dec 2013 19:04:05 +0900
> Subject: [PATCH] f2fs: introduce a new direct_IO write path
> Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
> linux-f2fs-devel@lists.sourceforge.net
>
> Previously, f2fs doesn't support direct IOs with high performance, which
> throws
> every write requests via the buffered write path, resulting in highly
> performance degradation due to memory opeations like copy_from_user.
>
> This patch introduces a new direct IO path in which every write requests
> are
> processed by generic blockdev_direct_IO() with enhanced get_block
> function.
>
> The get_data_block() in f2fs handles:
> 1. if original data blocks are allocates, then give them to blockdev.
> 2. otherwise,
> a. preallocate requested block addresses
> b. do not use extent cache for better performance
> c. give the block addresses to blockdev
>
> This policy induces that:
> - new allocated data are sequentially written to the disk
> - updated data are randomly written to the disk.
> - f2fs gives consistency on its file meta, not file data.
Looks Nice!
>
> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Reviewed-by: Chao Yu <chao2.yu@samsung.com>
> +
> + end_offset = IS_INODE(dn.node_page) ?
> + ADDRS_PER_INODE(F2FS_I(inode)) : ADDRS_PER_BLOCK;
> + bh_result->b_size = (((size_t)1) << blkbits);
> + dn.ofs_in_node++;
> + pgofs++;
> +
> +get_next:
> + if (dn.ofs_in_node >= end_offset) {
> + if (allocated)
> + sync_inode_page(&dn);
> + allocated = false;
if (allocated) {
sync_inode_page(&dn);
allocated = false;
}
Certainly, it's really not a big deal. :)
Thanks
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
WARNING: multiple messages have this Message-ID (diff)
From: Chao Yu <chao2.yu@samsung.com>
To: jaegeuk.kim@samsung.com
Cc: linux-kernel@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net,
linux-fsdevel@vger.kernel.org
Subject: RE: [f2fs-dev] [PATCH] f2fs: introduce a new direct_IO write path
Date: Thu, 19 Dec 2013 09:12:16 +0800 [thread overview]
Message-ID: <000901cefc57$775a6450$660f2cf0$@samsung.com> (raw)
In-Reply-To: <1387325521.2101.212.camel@kjgkr>
> -----Original Message-----
> From: Jaegeuk Kim [mailto:jaegeuk.kim@samsung.com]
> Sent: Wednesday, December 18, 2013 8:12 AM
> To: linux-fsdevel@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net
> Subject: Re: [f2fs-dev] [PATCH] f2fs: introduce a new direct_IO write path
>
> Change log from v1:
> o fix NOSPC error handling
>
> >From b8511a74fe98b67247a9feeed58441e8f5ffd705 Mon Sep 17 00:00:00 2001
> From: Jaegeuk Kim <jaegeuk.kim@samsung.com>
> Date: Mon, 16 Dec 2013 19:04:05 +0900
> Subject: [PATCH] f2fs: introduce a new direct_IO write path
> Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
> linux-f2fs-devel@lists.sourceforge.net
>
> Previously, f2fs doesn't support direct IOs with high performance, which
> throws
> every write requests via the buffered write path, resulting in highly
> performance degradation due to memory opeations like copy_from_user.
>
> This patch introduces a new direct IO path in which every write requests
> are
> processed by generic blockdev_direct_IO() with enhanced get_block
> function.
>
> The get_data_block() in f2fs handles:
> 1. if original data blocks are allocates, then give them to blockdev.
> 2. otherwise,
> a. preallocate requested block addresses
> b. do not use extent cache for better performance
> c. give the block addresses to blockdev
>
> This policy induces that:
> - new allocated data are sequentially written to the disk
> - updated data are randomly written to the disk.
> - f2fs gives consistency on its file meta, not file data.
Looks Nice!
>
> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Reviewed-by: Chao Yu <chao2.yu@samsung.com>
> +
> + end_offset = IS_INODE(dn.node_page) ?
> + ADDRS_PER_INODE(F2FS_I(inode)) : ADDRS_PER_BLOCK;
> + bh_result->b_size = (((size_t)1) << blkbits);
> + dn.ofs_in_node++;
> + pgofs++;
> +
> +get_next:
> + if (dn.ofs_in_node >= end_offset) {
> + if (allocated)
> + sync_inode_page(&dn);
> + allocated = false;
if (allocated) {
sync_inode_page(&dn);
allocated = false;
}
Certainly, it's really not a big deal. :)
Thanks
next prev parent reply other threads:[~2013-12-19 1:13 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-17 1:49 [PATCH] f2fs: introduce a new direct_IO write path Jaegeuk Kim
2013-12-17 1:49 ` Jaegeuk Kim
2013-12-18 0:12 ` Jaegeuk Kim
2013-12-19 1:12 ` Chao Yu [this message]
2013-12-19 1:12 ` [f2fs-dev] " Chao Yu
2013-12-20 2:14 ` Chao Yu
2013-12-20 2:14 ` [f2fs-dev] " Chao Yu
2013-12-20 9:21 ` Jaegeuk Kim
2013-12-20 9:21 ` [f2fs-dev] " 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='000901cefc57$775a6450$660f2cf0$@samsung.com' \
--to=chao2.yu@samsung.com \
--cc=jaegeuk.kim@samsung.com \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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.