Jeremy Allison via samba-technical
2018-04-27 23:07:43 UTC
Hi all,
I'm working on simplifying the VFS by removing the synchronous
versions of calls we already have async versions for. Right
now we have fsync_send()/recv(), pwrite_send()/recv() and
pread_send()/recv() - as WELL as fsync, pwrite and pread.
However we still use the sync versions in one or two small
and irritating places, meaning VFS implementors have to
add both sync and async versions of these backend calls
in order to get a fully functioning VFS.
Whilst working on removing the synchronous fsync() call
I discovered that ceph as a backend filesystem only
implements the synchronous fsync backend VFS call, not
the async versions.
This means SMB2 gated onto a ceph backend isn't syncing
files properly when the client requests it.
I created bug: https://bugzilla.samba.org/show_bug.cgi?id=13412
for this.
Patch that implements fsync_send()/recv() by cheating
and using ceph_fsync() synchronously under the covers
attached.
Please review and push if happy ! I need this as a
prerequisite for my other work (ceph is also missing
async pread/pwrite but that's a patch for another day :-).
Cheers,
Jeremy.
I'm working on simplifying the VFS by removing the synchronous
versions of calls we already have async versions for. Right
now we have fsync_send()/recv(), pwrite_send()/recv() and
pread_send()/recv() - as WELL as fsync, pwrite and pread.
However we still use the sync versions in one or two small
and irritating places, meaning VFS implementors have to
add both sync and async versions of these backend calls
in order to get a fully functioning VFS.
Whilst working on removing the synchronous fsync() call
I discovered that ceph as a backend filesystem only
implements the synchronous fsync backend VFS call, not
the async versions.
This means SMB2 gated onto a ceph backend isn't syncing
files properly when the client requests it.
I created bug: https://bugzilla.samba.org/show_bug.cgi?id=13412
for this.
Patch that implements fsync_send()/recv() by cheating
and using ceph_fsync() synchronously under the covers
attached.
Please review and push if happy ! I need this as a
prerequisite for my other work (ceph is also missing
async pread/pwrite but that's a patch for another day :-).
Cheers,
Jeremy.