You need to sign in or sign up before continuing.
  • Ilya Dryomov's avatar
    libceph: optionally use bounce buffer on recv path in crc mode · 038b8d1d
    Ilya Dryomov authored
    Both msgr1 and msgr2 in crc mode are zero copy in the sense that
    message data is read from the socket directly into the destination
    buffer.  We assume that the destination buffer is stable (i.e. remains
    unchanged while it is being read to) though.  Otherwise, CRC errors
    ensue:
    
      libceph: read_partial_message 0000000048edf8ad data crc 1063286393 != exp. 228122706
      libceph: osd1 (1)192.168.122.1:6843 bad crc/signature
    
      libceph: bad data crc, calculated 57958023, expected 1805382778
      libceph: osd2 (2)192.168.122.1:6876 integrity error, bad crc
    
    Introduce rxbounce option to enable use of a bounce buffer when
    receiving message data.  In particular this is needed if a mapped
    image is a Windows VM disk, passed to QEMU.  Windows has a system-wide
    "dummy" page that may be mapped into the destination buffer (potentially
    more than once into the same buffer) by the Windows Memory Manager in
    an effort to generate a single large I/O [1][2].  QEMU makes...
    038b8d1d
libceph.h 10.4 KB