Thanks for the detailed explanation, Jason. It makes sense that such operations would end up being a few metadata lookups only (and the metadata lookups will hit the disk only if they are not cached in-memory).
Prashant On Tue, May 2, 2017 at 11:29 AM, Jason Dillaman <[email protected]> wrote: > If the RBD object map feature is enabled, the read request would never > even be sent to the OSD if the client knows the backing object doesn't > exist. However, if the object map feature is disabled, the read request > will be sent to the OSD. > > The OSD isn't my area of expertise, but I can try to explain what occurs > to the best of my knowledge. There is a small in-memory cache for object > contexts with the OSD PG -- which includes a whiteout flag to indicate the > object is deleted. I believe that the whiteout flag is only really used on > a cache tier to avoid having to attempt to promote a known non-existent > object. Therefore, in the common case the OSD would query the non-existent > object from the object store (FileStore or BlueStore). > > In FileStore, it will attempt to open the associated backing file for > object. If the necessary dentries are cached in the kernel, I'd expect that > the -ENOENT error would be bubbled back to RBD w/o a disk hit. Otherwise, > the kernel would need to read the associated dentries from disk to > determine that the object is missing. > > In BlueStore, there is another in-memory cache for onodes that can quickly > detect a missing object. If the object isn't in the cache, the associated > onode will be looked up within the backing RocksDB. If the RocksDB metadata > scan for the object's onode fails since the object is missing, the -ENOENT > error would be bubbled back to the client. > > > > On Tue, May 2, 2017 at 1:24 PM, Prashant Murthy <[email protected]> > wrote: > >> I wanted to add that I was particularly interested about the behavior >> with filestore, but was also curious how this works on bluestore. >> >> Prashant >> >> On Mon, May 1, 2017 at 10:04 PM, Prashant Murthy <[email protected]> >> wrote: >> >>> Hi all, >>> >>> I was wondering what happens when reads are issued to an RBD device with >>> no previously written data. Can somebody explain how such requests flow >>> from rbd (client) into OSDs and whether any of these reads would hit the >>> disks at all or whether OSD metadata would recognize that there is no data >>> at the offsets requested and returns a bunch of zeros back to the client? >>> >>> Thanks, >>> Prashant >>> >>> -- >>> Prashant Murthy >>> Sr Director, Software Engineering | Salesforce >>> Mobile: 919-961-3041 <(919)%20961-3041> >>> >>> >>> -- >>> >> >> >> >> -- >> Prashant Murthy >> Sr Director, Software Engineering | Salesforce >> Mobile: 919-961-3041 <(919)%20961-3041> >> >> >> -- >> >> _______________________________________________ >> ceph-users mailing list >> [email protected] >> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com >> >> > > > -- > Jason > -- Prashant Murthy Sr Director, Software Engineering | Salesforce Mobile: 919-961-3041 --
_______________________________________________ ceph-users mailing list [email protected] http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
