* [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read
@ 2013-11-16 6:14 Chao Yu
2013-11-18 0:29 ` [f2fs-dev] " Jaegeuk Kim
0 siblings, 1 reply; 6+ messages in thread
From: Chao Yu @ 2013-11-16 6:14 UTC (permalink / raw)
To: '???'; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel
For better read performance, we add a new function to support for merging contiguous read as the one for write.
v1-->v2:
o add declarations here as Gu Zheng suggested.
Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Acked-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
---
fs/f2fs/data.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
fs/f2fs/f2fs.h | 4 ++++
2 files changed, 49 insertions(+)
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index aa3438c..18107cb 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -404,6 +404,51 @@ int f2fs_readpage(struct f2fs_sb_info *sbi, struct page *page,
return 0;
}
+void f2fs_submit_read_bio(struct f2fs_sb_info *sbi, int rw)
+{
+ down_read(&sbi->bio_sem);
+ if (sbi->read_bio) {
+ submit_bio(rw, sbi->read_bio);
+ sbi->read_bio = NULL;
+ }
+ up_read(&sbi->bio_sem);
+}
+
+void submit_read_page(struct f2fs_sb_info *sbi, struct page *page,
+ block_t blk_addr, int rw)
+{
+ struct block_device *bdev = sbi->sb->s_bdev;
+ int bio_blocks;
+
+ verify_block_addr(sbi, blk_addr);
+
+ down_read(&sbi->bio_sem);
+
+ if (sbi->read_bio && sbi->last_read_block != blk_addr - 1) {
+ submit_bio(rw, sbi->read_bio);
+ sbi->read_bio = NULL;
+ }
+
+alloc_new:
+ if (sbi->read_bio == NULL) {
+ bio_blocks = MAX_BIO_BLOCKS(max_hw_blocks(sbi));
+ sbi->read_bio = f2fs_bio_alloc(bdev, bio_blocks);
+ sbi->read_bio->bi_sector = SECTOR_FROM_BLOCK(sbi, blk_addr);
+ sbi->read_bio->bi_end_io = read_end_io;
+ }
+
+ if (bio_add_page(sbi->read_bio, page, PAGE_CACHE_SIZE, 0) <
+ PAGE_CACHE_SIZE) {
+ submit_bio(rw, sbi->read_bio);
+ sbi->read_bio = NULL;
+ goto alloc_new;
+ }
+
+ sbi->last_read_block = blk_addr;
+
+ up_read(&sbi->bio_sem);
+}
+
/*
* This function should be used by the data read flow only where it
* does not check the "create" flag that indicates block allocation.
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 89dc750..bfe9d87 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -359,6 +359,8 @@ struct f2fs_sb_info {
/* for segment-related operations */
struct f2fs_sm_info *sm_info; /* segment manager */
+ struct bio *read_bio; /* read bios to merge */
+ sector_t last_read_block; /* last read block number */
struct bio *bio[NR_PAGE_TYPE]; /* bios to merge */
sector_t last_block_in_bio[NR_PAGE_TYPE]; /* last block number */
struct rw_semaphore bio_sem; /* IO semaphore */
@@ -1111,6 +1113,8 @@ struct page *find_data_page(struct inode *, pgoff_t, bool);
struct page *get_lock_data_page(struct inode *, pgoff_t);
struct page *get_new_data_page(struct inode *, struct page *, pgoff_t, bool);
int f2fs_readpage(struct f2fs_sb_info *, struct page *, block_t, int);
+void f2fs_submit_read_bio(struct f2fs_sb_info *, int);
+void submit_read_page(struct f2fs_sb_info *, struct page *, block_t, int);
int do_write_data_page(struct page *);
/*
--
1.7.9.5
------------------------------------------------------------------------------
DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [f2fs-dev] [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read
2013-11-16 6:14 [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read Chao Yu
@ 2013-11-18 0:29 ` Jaegeuk Kim
2013-11-18 1:37 ` Chao Yu
0 siblings, 1 reply; 6+ messages in thread
From: Jaegeuk Kim @ 2013-11-18 0:29 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel, 谭姝
Hi Chao,
2013-11-16 (토), 14:14 +0800, Chao Yu:
> For better read performance, we add a new function to support for merging contiguous read as the one for write.
Please consider 80 columns for the description.
I cannot fix this at every time though. :(
>
> v1-->v2:
> o add declarations here as Gu Zheng suggested.
>
> Signed-off-by: Chao Yu <chao2.yu@samsung.com>
> Acked-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
> ---
> fs/f2fs/data.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
> fs/f2fs/f2fs.h | 4 ++++
> 2 files changed, 49 insertions(+)
>
> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
> index aa3438c..18107cb 100644
> --- a/fs/f2fs/data.c
> +++ b/fs/f2fs/data.c
> @@ -404,6 +404,51 @@ int f2fs_readpage(struct f2fs_sb_info *sbi, struct page *page,
> return 0;
> }
>
> +void f2fs_submit_read_bio(struct f2fs_sb_info *sbi, int rw)
> +{
> + down_read(&sbi->bio_sem);
Is there any reason to use down_read()?
It seems that we need to declare sbi->bio_read and sbi->bio_write
instead of sbi->bio_sem.
In addition to that, we need to use down_write(&sbi->bio_read) here.
> + if (sbi->read_bio) {
> + submit_bio(rw, sbi->read_bio);
> + sbi->read_bio = NULL;
> + }
> + up_read(&sbi->bio_sem);
up_write(&sbi->bio_read);
> +}
> +
> +void submit_read_page(struct f2fs_sb_info *sbi, struct page *page,
> + block_t blk_addr, int rw)
> +{
> + struct block_device *bdev = sbi->sb->s_bdev;
> + int bio_blocks;
> +
> + verify_block_addr(sbi, blk_addr);
> +
> + down_read(&sbi->bio_sem);
down_write(&sbi->bio_read);
> +
> + if (sbi->read_bio && sbi->last_read_block != blk_addr - 1) {
> + submit_bio(rw, sbi->read_bio);
> + sbi->read_bio = NULL;
> + }
> +
> +alloc_new:
> + if (sbi->read_bio == NULL) {
> + bio_blocks = MAX_BIO_BLOCKS(max_hw_blocks(sbi));
> + sbi->read_bio = f2fs_bio_alloc(bdev, bio_blocks);
> + sbi->read_bio->bi_sector = SECTOR_FROM_BLOCK(sbi, blk_addr);
> + sbi->read_bio->bi_end_io = read_end_io;
> + }
> +
> + if (bio_add_page(sbi->read_bio, page, PAGE_CACHE_SIZE, 0) <
> + PAGE_CACHE_SIZE) {
> + submit_bio(rw, sbi->read_bio);
> + sbi->read_bio = NULL;
> + goto alloc_new;
> + }
> +
> + sbi->last_read_block = blk_addr;
> +
> + up_read(&sbi->bio_sem);
up_write(&sbi->bio_read);
> +}
> +
> /*
> * This function should be used by the data read flow only where it
> * does not check the "create" flag that indicates block allocation.
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index 89dc750..bfe9d87 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -359,6 +359,8 @@ struct f2fs_sb_info {
>
> /* for segment-related operations */
> struct f2fs_sm_info *sm_info; /* segment manager */
> + struct bio *read_bio; /* read bios to merge */
> + sector_t last_read_block; /* last read block number */
> struct bio *bio[NR_PAGE_TYPE]; /* bios to merge */
> sector_t last_block_in_bio[NR_PAGE_TYPE]; /* last block number */
> struct rw_semaphore bio_sem; /* IO semaphore */
> @@ -1111,6 +1113,8 @@ struct page *find_data_page(struct inode *, pgoff_t, bool);
> struct page *get_lock_data_page(struct inode *, pgoff_t);
> struct page *get_new_data_page(struct inode *, struct page *, pgoff_t, bool);
> int f2fs_readpage(struct f2fs_sb_info *, struct page *, block_t, int);
> +void f2fs_submit_read_bio(struct f2fs_sb_info *, int);
> +void submit_read_page(struct f2fs_sb_info *, struct page *, block_t, int);
> int do_write_data_page(struct page *);
>
> /*
--
Jaegeuk Kim
Samsung
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read
2013-11-18 0:29 ` [f2fs-dev] " Jaegeuk Kim
@ 2013-11-18 1:37 ` Chao Yu
2013-11-18 9:11 ` Jaegeuk Kim
0 siblings, 1 reply; 6+ messages in thread
From: Chao Yu @ 2013-11-18 1:37 UTC (permalink / raw)
To: jaegeuk.kim; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel
Hi Kim,
> -----Original Message-----
> From: Jaegeuk Kim [mailto:jaegeuk.kim@samsung.com]
> Sent: Monday, November 18, 2013 8:29 AM
> To: Chao Yu
> Cc: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net; 谭姝
> Subject: Re: [f2fs-dev] [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read
>
> Hi Chao,
>
> 2013-11-16 (토), 14:14 +0800, Chao Yu:
> > For better read performance, we add a new function to support for merging contiguous read as the one for write.
>
> Please consider 80 columns for the description.
> I cannot fix this at every time though. :(
Got it, sorry about my carelessness in previous patch.
>
> >
> > v1-->v2:
> > o add declarations here as Gu Zheng suggested.
> >
> > Signed-off-by: Chao Yu <chao2.yu@samsung.com>
> > Acked-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
> > ---
> > fs/f2fs/data.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
> > fs/f2fs/f2fs.h | 4 ++++
> > 2 files changed, 49 insertions(+)
> >
> > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
> > index aa3438c..18107cb 100644
> > --- a/fs/f2fs/data.c
> > +++ b/fs/f2fs/data.c
> > @@ -404,6 +404,51 @@ int f2fs_readpage(struct f2fs_sb_info *sbi, struct page *page,
> > return 0;
> > }
> >
> > +void f2fs_submit_read_bio(struct f2fs_sb_info *sbi, int rw)
> > +{
> > + down_read(&sbi->bio_sem);
>
> Is there any reason to use down_read()?
Isn't that we use bio_sem to let w/r or w/w submitting be mutex?
> It seems that we need to declare sbi->bio_read and sbi->bio_write
> instead of sbi->bio_sem.
> In addition to that, we need to use down_write(&sbi->bio_read) here.
If so, it looks similar between (struct rw_semaphore) sbi->bio_read
and (struct bio *) sbi->read_bio.
How about using read_bio_sem/rbio_sem to differentiate
from sbi->read_bio?
>
> > + if (sbi->read_bio) {
> > + submit_bio(rw, sbi->read_bio);
> > + sbi->read_bio = NULL;
> > + }
> > + up_read(&sbi->bio_sem);
>
> up_write(&sbi->bio_read);
>
> > +}
> > +
> > +void submit_read_page(struct f2fs_sb_info *sbi, struct page *page,
> > + block_t blk_addr, int rw)
> > +{
> > + struct block_device *bdev = sbi->sb->s_bdev;
> > + int bio_blocks;
> > +
> > + verify_block_addr(sbi, blk_addr);
> > +
> > + down_read(&sbi->bio_sem);
>
> down_write(&sbi->bio_read);
>
> > +
> > + if (sbi->read_bio && sbi->last_read_block != blk_addr - 1) {
> > + submit_bio(rw, sbi->read_bio);
> > + sbi->read_bio = NULL;
> > + }
> > +
> > +alloc_new:
> > + if (sbi->read_bio == NULL) {
> > + bio_blocks = MAX_BIO_BLOCKS(max_hw_blocks(sbi));
> > + sbi->read_bio = f2fs_bio_alloc(bdev, bio_blocks);
> > + sbi->read_bio->bi_sector = SECTOR_FROM_BLOCK(sbi, blk_addr);
> > + sbi->read_bio->bi_end_io = read_end_io;
> > + }
> > +
> > + if (bio_add_page(sbi->read_bio, page, PAGE_CACHE_SIZE, 0) <
> > + PAGE_CACHE_SIZE) {
> > + submit_bio(rw, sbi->read_bio);
> > + sbi->read_bio = NULL;
> > + goto alloc_new;
> > + }
> > +
> > + sbi->last_read_block = blk_addr;
> > +
> > + up_read(&sbi->bio_sem);
>
> up_write(&sbi->bio_read);
>
> > +}
> > +
> > /*
> > * This function should be used by the data read flow only where it
> > * does not check the "create" flag that indicates block allocation.
> > diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> > index 89dc750..bfe9d87 100644
> > --- a/fs/f2fs/f2fs.h
> > +++ b/fs/f2fs/f2fs.h
> > @@ -359,6 +359,8 @@ struct f2fs_sb_info {
> >
> > /* for segment-related operations */
> > struct f2fs_sm_info *sm_info; /* segment manager */
> > + struct bio *read_bio; /* read bios to merge */
> > + sector_t last_read_block; /* last read block number */
> > struct bio *bio[NR_PAGE_TYPE]; /* bios to merge */
> > sector_t last_block_in_bio[NR_PAGE_TYPE]; /* last block number */
> > struct rw_semaphore bio_sem; /* IO semaphore */
> > @@ -1111,6 +1113,8 @@ struct page *find_data_page(struct inode *, pgoff_t, bool);
> > struct page *get_lock_data_page(struct inode *, pgoff_t);
> > struct page *get_new_data_page(struct inode *, struct page *, pgoff_t, bool);
> > int f2fs_readpage(struct f2fs_sb_info *, struct page *, block_t, int);
> > +void f2fs_submit_read_bio(struct f2fs_sb_info *, int);
> > +void submit_read_page(struct f2fs_sb_info *, struct page *, block_t, int);
> > int do_write_data_page(struct page *);
> >
> > /*
>
> --
> Jaegeuk Kim
> Samsung
------------------------------------------------------------------------------
DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read
2013-11-18 1:37 ` Chao Yu
@ 2013-11-18 9:11 ` Jaegeuk Kim
2013-11-18 10:10 ` Gu Zheng
2013-11-19 1:41 ` Chao Yu
0 siblings, 2 replies; 6+ messages in thread
From: Jaegeuk Kim @ 2013-11-18 9:11 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel
Hi,
2013-11-18 (월), 09:37 +0800, Chao Yu:
> Hi Kim,
>
> > -----Original Message-----
> > From: Jaegeuk Kim [mailto:jaegeuk.kim@samsung.com]
> > Sent: Monday, November 18, 2013 8:29 AM
> > To: Chao Yu
> > Cc: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net; 谭姝
> > Subject: Re: [f2fs-dev] [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read
> >
> > Hi Chao,
> >
> > 2013-11-16 (토), 14:14 +0800, Chao Yu:
> > > For better read performance, we add a new function to support for merging contiguous read as the one for write.
> >
> > Please consider 80 columns for the description.
> > I cannot fix this at every time though. :(
>
> Got it, sorry about my carelessness in previous patch.
>
> >
> > >
> > > v1-->v2:
> > > o add declarations here as Gu Zheng suggested.
> > >
> > > Signed-off-by: Chao Yu <chao2.yu@samsung.com>
> > > Acked-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
> > > ---
> > > fs/f2fs/data.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
> > > fs/f2fs/f2fs.h | 4 ++++
> > > 2 files changed, 49 insertions(+)
> > >
> > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
> > > index aa3438c..18107cb 100644
> > > --- a/fs/f2fs/data.c
> > > +++ b/fs/f2fs/data.c
> > > @@ -404,6 +404,51 @@ int f2fs_readpage(struct f2fs_sb_info *sbi, struct page *page,
> > > return 0;
> > > }
> > >
> > > +void f2fs_submit_read_bio(struct f2fs_sb_info *sbi, int rw)
> > > +{
> > > + down_read(&sbi->bio_sem);
> >
> > Is there any reason to use down_read()?
>
> Isn't that we use bio_sem to let w/r or w/w submitting be mutex?
As I examined the bio_sem, I think we don't need to use a semaphore for
read and write IOs.
Just it is enough to use a mutex for writes only.
>
> > It seems that we need to declare sbi->bio_read and sbi->bio_write
> > instead of sbi->bio_sem.
> > In addition to that, we need to use down_write(&sbi->bio_read) here.
>
> If so, it looks similar between (struct rw_semaphore) sbi->bio_read
> and (struct bio *) sbi->read_bio.
> How about using read_bio_sem/rbio_sem to differentiate
> from sbi->read_bio?
I think sbi->write_mutex and sbi->read_mutex are much better.
Could you refer the following patches?
Thanks,
--
Jaegeuk Kim
Samsung
------------------------------------------------------------------------------
DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read
2013-11-18 9:11 ` Jaegeuk Kim
@ 2013-11-18 10:10 ` Gu Zheng
2013-11-19 1:41 ` Chao Yu
1 sibling, 0 replies; 6+ messages in thread
From: Gu Zheng @ 2013-11-18 10:10 UTC (permalink / raw)
To: jaegeuk.kim; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel
On 11/18/2013 05:11 PM, Jaegeuk Kim wrote:
> Hi,
>
> 2013-11-18 (월), 09:37 +0800, Chao Yu:
>> Hi Kim,
>>
>>> -----Original Message-----
>>> From: Jaegeuk Kim [mailto:jaegeuk.kim@samsung.com]
>>> Sent: Monday, November 18, 2013 8:29 AM
>>> To: Chao Yu
>>> Cc: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; linux-f2fs-devel@lists.sourceforge.net; 谭姝
>>> Subject: Re: [f2fs-dev] [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read
>>>
>>> Hi Chao,
>>>
>>> 2013-11-16 (토), 14:14 +0800, Chao Yu:
>>>> For better read performance, we add a new function to support for merging contiguous read as the one for write.
>>>
>>> Please consider 80 columns for the description.
>>> I cannot fix this at every time though. :(
>>
>> Got it, sorry about my carelessness in previous patch.
>>
>>>
>>>>
>>>> v1-->v2:
>>>> o add declarations here as Gu Zheng suggested.
>>>>
>>>> Signed-off-by: Chao Yu <chao2.yu@samsung.com>
>>>> Acked-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
>>>> ---
>>>> fs/f2fs/data.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>>> fs/f2fs/f2fs.h | 4 ++++
>>>> 2 files changed, 49 insertions(+)
>>>>
>>>> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
>>>> index aa3438c..18107cb 100644
>>>> --- a/fs/f2fs/data.c
>>>> +++ b/fs/f2fs/data.c
>>>> @@ -404,6 +404,51 @@ int f2fs_readpage(struct f2fs_sb_info *sbi, struct page *page,
>>>> return 0;
>>>> }
>>>>
>>>> +void f2fs_submit_read_bio(struct f2fs_sb_info *sbi, int rw)
>>>> +{
>>>> + down_read(&sbi->bio_sem);
>>>
>>> Is there any reason to use down_read()?
>>
>> Isn't that we use bio_sem to let w/r or w/w submitting be mutex?
>
> As I examined the bio_sem, I think we don't need to use a semaphore for
> read and write IOs.
> Just it is enough to use a mutex for writes only.
Agree. Mutex is more suitable here, we just want to protect the write bio
related fields in the write patch, no relations to read.
>
>>
>>> It seems that we need to declare sbi->bio_read and sbi->bio_write
>>> instead of sbi->bio_sem.
>>> In addition to that, we need to use down_write(&sbi->bio_read) here.
>>
>> If so, it looks similar between (struct rw_semaphore) sbi->bio_read
>> and (struct bio *) sbi->read_bio.
>> How about using read_bio_sem/rbio_sem to differentiate
>> from sbi->read_bio?
>
> I think sbi->write_mutex and sbi->read_mutex are much better.
It's more reasonable and readable.
Thanks,
Gu
>
> Could you refer the following patches?
> Thanks,
>
------------------------------------------------------------------------------
DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read
2013-11-18 9:11 ` Jaegeuk Kim
2013-11-18 10:10 ` Gu Zheng
@ 2013-11-19 1:41 ` Chao Yu
1 sibling, 0 replies; 6+ messages in thread
From: Chao Yu @ 2013-11-19 1:41 UTC (permalink / raw)
To: jaegeuk.kim; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel
Hi
> -----Original Message-----
> From: Jaegeuk Kim [mailto:jaegeuk.kim@samsung.com]
> Sent: Monday, November 18, 2013 5:11 PM
> To: Chao Yu
> Cc: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org;
> linux-f2fs-devel@lists.sourceforge.net; '谭姝'
> Subject: RE: [f2fs-dev] [PATCH V2 1/2] f2fs: add a new function to support for
> merging contiguous read
>
> Hi,
>
> 2013-11-18 (월), 09:37 +0800, Chao Yu:
> > Hi Kim,
> >
> > > -----Original Message-----
> > > From: Jaegeuk Kim [mailto:jaegeuk.kim@samsung.com]
> > > Sent: Monday, November 18, 2013 8:29 AM
> > > To: Chao Yu
> > > Cc: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org;
> linux-f2fs-devel@lists.sourceforge.net; 谭姝
> > > Subject: Re: [f2fs-dev] [PATCH V2 1/2] f2fs: add a new function to support for
> merging contiguous read
> > >
> > > Hi Chao,
> > >
> > > 2013-11-16 (토), 14:14 +0800, Chao Yu:
> > > > For better read performance, we add a new function to support for merging
> contiguous read as the one for write.
> > >
> > > Please consider 80 columns for the description.
> > > I cannot fix this at every time though. :(
> >
> > Got it, sorry about my carelessness in previous patch.
> >
> > >
> > > >
> > > > v1-->v2:
> > > > o add declarations here as Gu Zheng suggested.
> > > >
> > > > Signed-off-by: Chao Yu <chao2.yu@samsung.com>
> > > > Acked-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
> > > > ---
> > > > fs/f2fs/data.c | 45
> +++++++++++++++++++++++++++++++++++++++++++++
> > > > fs/f2fs/f2fs.h | 4 ++++
> > > > 2 files changed, 49 insertions(+)
> > > >
> > > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
> > > > index aa3438c..18107cb 100644
> > > > --- a/fs/f2fs/data.c
> > > > +++ b/fs/f2fs/data.c
> > > > @@ -404,6 +404,51 @@ int f2fs_readpage(struct f2fs_sb_info *sbi, struct
> page *page,
> > > > return 0;
> > > > }
> > > >
> > > > +void f2fs_submit_read_bio(struct f2fs_sb_info *sbi, int rw)
> > > > +{
> > > > + down_read(&sbi->bio_sem);
> > >
> > > Is there any reason to use down_read()?
> >
> > Isn't that we use bio_sem to let w/r or w/w submitting be mutex?
>
> As I examined the bio_sem, I think we don't need to use a semaphore for
> read and write IOs.
> Just it is enough to use a mutex for writes only.
Agreed, it could also improve efficiency of read/write request concurrent.
>
> >
> > > It seems that we need to declare sbi->bio_read and sbi->bio_write
> > > instead of sbi->bio_sem.
> > > In addition to that, we need to use down_write(&sbi->bio_read) here.
> >
> > If so, it looks similar between (struct rw_semaphore) sbi->bio_read
> > and (struct bio *) sbi->read_bio.
> > How about using read_bio_sem/rbio_sem to differentiate
> > from sbi->read_bio?
>
> I think sbi->write_mutex and sbi->read_mutex are much better.
>
> Could you refer the following patches?
It's better, I will refer your patch.
And how about this following patch to reduce race of write_mutex
between DATA/NODE/META writer?
> Thanks,
>
> --
> Jaegeuk Kim
> Samsung
------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing
conversations that shape the rapidly evolving mobile landscape. Sign up now.
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-11-19 1:41 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-16 6:14 [PATCH V2 1/2] f2fs: add a new function to support for merging contiguous read Chao Yu
2013-11-18 0:29 ` [f2fs-dev] " Jaegeuk Kim
2013-11-18 1:37 ` Chao Yu
2013-11-18 9:11 ` Jaegeuk Kim
2013-11-18 10:10 ` Gu Zheng
2013-11-19 1:41 ` Chao Yu
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).