[PATCH 0/4] Replace lseek..write/read to pwrite/pread

Petr Tesarik ptesarik at suse.cz
Wed Apr 30 06:21:34 PDT 2014


On Wed, 30 Apr 2014 21:19:55 +0900 (JST)
HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> wrote:

> From: Petr Tesarik <ptesarik at suse.cz>
> Subject: Re: [PATCH 0/4] Replace lseek..write/read to pwrite/pread
> Date: Wed, 30 Apr 2014 13:53:04 +0200
> 
> > On Wed, 30 Apr 2014 20:41:38 +0900 (JST)
> > HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> wrote:
> > 
> >> From: Wang Nan <wangnan0 at huawei.com>
> >> Subject: [PATCH 0/4] Replace lseek..write/read to pwrite/pread
> >> Date: Sat, 26 Apr 2014 12:07:05 +0800
> >> 
> >> > In original code there are many operations read from /write to specific
> >> > positions of a file. This series of patches replace such patterns to
> >> > pread/pwrite calls, reduces more than 100 lines of code.
> >> > 
> >> 
> >> I'm now writing pthread support patch set and it will naturally
> >> include pread/pwrite like this patch set.
> >> 
> >> It sounds to me that using pread/pwrite only to reduce lseek code is
> >> weak in motivation. Is there another visible merit? For example, any
> >> kind of performance improvement. I guess it's small even if exists
> >> compared to I/O.
> > 
> > There is no user-visible benefit just from applying the patch, that's
> > right.
> > 
> > The main benefit is that these pread/pwrite operations are atomic and do
> > not move the file offset, so all subprocesses (or threads) can share
> > the same file descriptor. This allows to remove reopen_dump_memory(),
> > for example.
> > 
> > Anyway, is improving code readability really so weak argument?
> > 
> > Petr T
> 
> In the current code, parallelism occurs only when --split option is
> specified. It seems to me that reopen_dump_memory() is enough. So, it
> appears to me that this patch set just changes lseek(); read(); or
> lseek(); write() lines to pread() or pwrite(), so I don't see so big
> difference...

True. But as you can see in patch 4/4, it also allowed to reduce the
number of error paths.

But I'm confused. Since you say you plan to replace lseek+read/write
with pread/pwrite as part of a pthread-enabling patch series anyway,
what is your point if you argue against replacing it now?

Just trying to understand...

Petr T



More information about the kexec mailing list