Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Register
  • Sign in
  • L linux
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • Kirill Smelkov
  • linux
  • Repository
  • linux
  • include
  • linux
  • ceph
  • libceph.h
Find file BlameHistoryPermalink
  • Ilya Dryomov's avatar
    libceph: optionally use bounce buffer on recv path in crc mode · 038b8d1d
    Ilya Dryomov authored Dec 30, 2021
    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 a point of
    preserving overlap relationships when cloning I/O vectors, so krbd gets
    exposed to this behaviour.
    
    [1] "What Is Really in That MDL?"
        https://docs.microsoft.com/en-us/previous-versions/windows/hardware/design/dn614012(v=vs.85)
    [2] https://blogs.msmvps.com/kernelmustard/2005/05/04/dummy-pages/
    
    URL: https://bugzilla.redhat.com/show_bug.cgi?id=1973317
    
    
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
    038b8d1d
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7