sim...@netbsd.org (Simon Burge) writes: >Jaromir wrote:
>> > On 3/06/21 9:58 am, Mark Davies wrote: >> > > done - https://bugzilla.samba.org/show_bug.cgi?id=14727 >> > >> > And looks like they are throwing it back as a kernel bug >> > >> > https://bugzilla.samba.org/show_bug.cgi?id=14727#c3 >> >> O_CREAT really shouldn't cause the open to fail if the file already >> exists regardless of filesystem, so they are right. >I agree with Jaromir here. From the link in the samba bug, the SUSv3 >open() page entry for the O_CREAT flag starts with: > O_CREAT > If the file exists, this flag has no effect except as noted > under O_EXCL below. What happens: namei() return EEXIST when it works on a CREATE operation and crosses a mountpoint. procfs cheats in that the directory nodes like /proc/$pid/fd are served by procfs and have a v_mount pointing to /proc. But the file descriptors /proc/$pid/fd/$fd are magic aliases and you get the real vnode of that open file which belongs to a different mount, e.g. /dev/pts for a pty or a ffs filesystem for a regular file. For namei() that's crossing a mountpoint -> EEXIST.