2013-07-26 07:08:12

by majianpeng

[permalink] [raw]
Subject: question about splice

Hi all,
I used splice and found a prolem(at least i call).
The demo is:
A:splice(regularfileA--->pipe);
B:splice(pipe--->regularfileB)
Before do B, we modify the data of regA which now in pipe. The data to regularfileB willbe change.
If we used the buff
A:read(regA, buff);
B: write(buff, regB);
After A, the contend of regA can't effect the buff.
Review the code of splice,I know the pipe share the pagecache of regA.
Maybe this is not a problem or am i missing something?

Thanks!
Jianpeng Ma????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?


2013-07-26 07:48:27

by Gu Zheng

[permalink] [raw]
Subject: Re: question about splice

Hi Jianpeng,

On 07/26/2013 03:08 PM, majianpeng wrote:

> Hi all,
> I used splice and found a prolem(at least i call).
> The demo is:
> A:splice(regularfileA--->pipe);
> B:splice(pipe--->regularfileB)
> Before do B, we modify the data of regA which now in pipe. The data to regularfileB willbe change.
> If we used the buff
> A:read(regA, buff);
> B: write(buff, regB);
> After A, the contend of regA can't effect the buff.
> Review the code of splice,I know the pipe share the pagecache of regA.

Right. And also this is the splice's original design intention, using share mmap rather
than copy_to_user/copy_from_user in order to achieve zero-copy.

Thanks,
Gu

> Maybe this is not a problem or am i missing something?

>
> Thanks!
> Jianpeng MaN嫥叉靣笡y氊b瞂千v豝�)藓{.n�+壏{睉赙zXФ洝塄}财爖�&j:+v墾�珣赙zZ+€�+zf"穐殘啳嗃i�z�畐ア�?櫒璀�&�)撷f旟^j谦y呩@A玜囤� 0鹅h�鍜i

2013-07-26 07:54:09

by majianpeng

[permalink] [raw]
Subject: Re: Re: question about splice

>Hi Jianpeng,
>
>On 07/26/2013 03:08 PM, majianpeng wrote:
>
>> Hi all,
>> I used splice and found a prolem(at least i call).
>> The demo is:
>> A:splice(regularfileA--->pipe);
>> B:splice(pipe--->regularfileB)
>> Before do B, we modify the data of regA which now in pipe. The data to regularfileB willbe change.
>> If we used the buff
>> A:read(regA, buff);
>> B: write(buff, regB);
>> After A, the contend of regA can't effect the buff.
>> Review the code of splice,I know the pipe share the pagecache of regA.
>
>Right. And also this is the splice's original design intention, using share mmap rather
>than copy_to_user/copy_from_user in order to achieve zero-copy.
>
If it use some method like COW, i think it can avoid this problem.
>Thanks,
>Gu
>
>> Maybe this is not a problem or am i missing something?
>
>>
>> Thanks!
>> Jianpeng MaN?????r??y????b?X??ǧv?^?)޺{.n?+????{????zX????ܨ}???Ơz?&j:+v???????zZ+??+zf???h???~????i???z??w?????????&?)ߢf??^jǫy?m??@A?a???
>0??h???i
>
>
Thanks!
Jianpeng Ma
>Hi Jianpeng,
>
>On 07/26/2013 03:08 PM, majianpeng wrote:
>
>> Hi all,
>> I used splice and found a prolem(at least i call).
>> The demo is:
>> A:splice(regularfileA--->pipe);
>> B:splice(pipe--->regularfileB)
>> Before do B, we modify the data of regA which now in pipe. The data to regularfileB willbe change.
>> If we used the buff
>> A:read(regA, buff);
>> B: write(buff, regB);
>> After A, the contend of regA can't effect the buff.
>> Review the code of splice,I know the pipe share the pagecache of regA.
>
>Right. And also this is the splice's original design intention, using share mmap rather
>than copy_to_user/copy_from_user in order to achieve zero-copy.
>
>Thanks,
>Gu
>
>> Maybe this is not a problem or am i missing something?
>
>>
>> Thanks!
>> Jianpeng MaN?????r??y????b?X??ǧv?^?)޺{.n?+????{????zX????ܨ}???Ơz?&j:+v???????zZ+??+zf???h???~????i???z??w?????????&?)ߢf??^jǫy?m??@A?a???
>0??h???i
>
>????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?