Keep in mind that this coordination is largely happening above the FileStore layer, so you are indeed not seeing any code within the FileStore to support it. :) But operations within the OSD are ordered on a per-PG basis, and while in-progress writes can overlap, a read will be blocked until the writes are applied (and subsequent writes will be blocked behind the read). -Greg Software Engineer #42 @ http://inktank.com | http://ceph.com On Tue, Jul 22, 2014 at 8:58 PM, Haomai Wang <haomaiwang at gmail.com> wrote: > Read will get the newest content. If the read arrives during the write > interval, it will wait for the write applied. > > On Wed, Jul 23, 2014 at 10:22 AM, James Pan <devjmp at yahoo.com> wrote: >> Hi everyone, >> >> I am reading the FileStore source code and confused with the read() and write() process. >> >> If journal is enable, write() will be acknowledged after the changes are committed to the journal device but before they are applied to the file system. However read() is always satisfied from the OSD file on the file system, so if a read arrives during this interval. Will the read get the stale data? Does this behavior break the read-after-write posix semantics? Shouldn't the read go to the journal for the latest data? >> >> Please point me out if my understanding is incorrect, thanks very much. >> >> Best regards, >> James Pan >> >> _______________________________________________ >> ceph-users mailing list >> ceph-users at lists.ceph.com >> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com > > > > -- > Best Regards, > > Wheat > _______________________________________________ > ceph-users mailing list > ceph-users at lists.ceph.com > http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com