> On Sep 3, 2015, at 21:19, Janusz Borkowski <janusz.borkow...@infobright.com>
> wrote:
>
> Hi!
>
> Actually, it looks that O_APPEND does not work even if the file kept open
> read-only (reader + writer). Test:
>
> in one session
>> less /mnt/ceph/test
> in another session
>> echo "start or end" >> /mnt/ceph/test
I can’t reproduce this on 4.1 kernel.
I wrote a simple fix
https://github.com/ceph/ceph-client/commit/53c2bc09db6119058170c7dd486788c9aafbfe8b
<https://github.com/ceph/ceph-client/commit/53c2bc09db6119058170c7dd486788c9aafbfe8b>.
It gets inode size before each write. This fix is still racy for multiple
writer case. If you want strict append behaviour, please wrap each write with
file lock,
Regards
Yan, Zheng
>
> "start or end" is written to the start of the file.
> J.
>
> On 02.09.2015 11:50, Yan, Zheng wrote:
>>> On Sep 2, 2015, at 17:11, Gregory Farnum <gfar...@redhat.com> wrote:
>>>
>>> Whoops, forgot to add Zheng.
>>>
>>> On Wed, Sep 2, 2015 at 10:11 AM, Gregory Farnum <gfar...@redhat.com> wrote:
>>>> On Wed, Sep 2, 2015 at 10:00 AM, Janusz Borkowski
>>>> <janusz.borkow...@infobright.com> wrote:
>>>>> Hi!
>>>>>
>>>>> I mount cephfs using kernel client (3.10.0-229.11.1.el7.x86_64).
>>>>>
>>>>> The effect is the same when doing "echo >>" from another machine and from
>>>>> a
>>>>> machine keeping the file open.
>>>>>
>>>>> The file is opened with open( ..,
>>>>> O_WRONLY|O_LARGEFILE|O_APPEND|O_BINARY|O_CREAT)
>>>>>
>>>>> Shell ">>" is implemented as (from strace bash -c "echo '7789' >>
>>>>> /mnt/ceph/test):
>>>>>
>>>>> open("/mnt/ceph/test", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
>>>>>
>>>>> The test file had ~500KB size.
>>>>>
>>>>> Each subsequent "echo >>" writes to the start of the test file, first
>>>>> "echo"
>>>>> overwriting the original contents, next "echos" overwriting bytes written
>>>>> by
>>>>> the preceding "echo".
>>>> Hmmm. The userspace (ie, ceph-fuse) implementation of this is a little
>>>> bit racy but ought to work. I'm not as familiar with the kernel code
>>>> but I'm not seeing any special behavior in the Ceph code — Zheng,
>>>> would you expect this to work? It looks like some of the linux
>>>> filesystems have their own O_APPEND handling and some don't, but I
>>>> can't find it in the VFS either.
>>>> -Greg
>> Yes, the kernel client does not handle the case that multiple clients do
>> append write to the same file. I will fix it soon.
>>
>> Regards
>> Yan, Zheng
>>
>
_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com