1. 17 5月, 2012 1 次提交
  2. 12 11月, 2011 1 次提交
  3. 23 3月, 2011 1 次提交
  4. 22 3月, 2011 1 次提交
    • S
      libceph: fix osd request queuing on osdmap updates · 6f6c7006
      Sage Weil 提交于
      If we send a request to osd A, and the request's pg remaps to osd B and
      then back to A in quick succession, we need to resend the request to A. The
      old code was only calling kick_requests after processing all incremental
      maps in a message, so it was very possible to not resend a request that
      needed to be resent.  This would make the osd eventually time out (at least
      with the current default of osd timeouts enabled).
      
      The correct approach is to scan requests on every map incremental.  This
      patch refactors the kick code in a few ways:
       - all requests are either on req_lru (in flight), req_unsent (ready to
         send), or req_notarget (currently map to no up osd)
       - mapping always done by map_request (previous map_osds)
       - if the mapping changes, we requeue.  requests are resent only after all
         map incrementals are processed.
       - some osd reset code is moved out of kick_requests into a separate
         function
       - the "kick this osd" functionality is moved to kick_osd_requests, as it
         is unrelated to scanning for request->pg->osd mapping changes
      Signed-off-by: NSage Weil <sage@newdream.net>
      6f6c7006
  5. 10 11月, 2010 1 次提交
    • S
      ceph: make page alignment explicit in osd interface · b7495fc2
      Sage Weil 提交于
      We used to infer alignment of IOs within a page based on the file offset,
      which assumed they matched.  This broke with direct IO that was not aligned
      to pages (e.g., 512-byte aligned IO).  We were also trusting the alignment
      specified in the OSD reply, which could have been adjusted by the server.
      
      Explicitly specify the page alignment when setting up OSD IO requests.
      Signed-off-by: NSage Weil <sage@newdream.net>
      b7495fc2
  6. 21 10月, 2010 4 次提交
  7. 12 5月, 2010 1 次提交
  8. 06 5月, 2010 1 次提交
    • S
      ceph: don't use writeback_control in writepages completion · 54ad023b
      Sage Weil 提交于
      The ->writepages writeback_control is not still valid in the writepages
      completion.  We were touching it solely to adjust pages_skipped when there
      was a writeback error (EIO, ENOSPC, EPERM due to bad osd credentials),
      causing an oops in the writeback code shortly thereafter.  Updating
      pages_skipped on error isn't correct anyway, so let's just rip out this
      (clearly broken) code to pass the wbc to the completion.
      Signed-off-by: NSage Weil <sage@newdream.net>
      54ad023b
  9. 23 3月, 2010 1 次提交
  10. 05 3月, 2010 1 次提交
    • Y
      ceph: reset osd after relevant messages timed out · 422d2cb8
      Yehuda Sadeh 提交于
      This simplifies the process of timing out messages. We
      keep lru of current messages that are in flight. If a
      timeout has passed, we reset the osd connection, so that
      messages will be retransmitted.  This is a failsafe in case
      we hit some sort of problem sending out message to the OSD.
      Normally, we'll get notification via an updated osdmap if
      there are problems.
      
      If a request is older than the keepalive timeout, send a
      keepalive to ensure we detect any breaks in the TCP connection.
      Signed-off-by: NYehuda Sadeh <yehuda@hq.newdream.net>
      Signed-off-by: NSage Weil <sage@newdream.net>
      422d2cb8
  11. 02 3月, 2010 1 次提交
  12. 12 2月, 2010 1 次提交
  13. 26 1月, 2010 1 次提交
  14. 15 1月, 2010 1 次提交
  15. 24 12月, 2009 1 次提交
    • S
      ceph: control access to page vector for incoming data · 350b1c32
      Sage Weil 提交于
      When we issue an OSD read, we specify a vector of pages that the data is to
      be read into.  The request may be sent multiple times, to multiple OSDs, if
      the osdmap changes, which means we can get more than one reply.
      
      Only read data into the page vector if the reply is coming from the
      OSD we last sent the request to.  Keep track of which connection is using
      the vector by taking a reference.  If another connection was already
      using the vector before and a new reply comes in on the right connection,
      revoke the pages from the other connection.
      Signed-off-by: NSage Weil <sage@newdream.net>
      350b1c32
  16. 22 12月, 2009 1 次提交
  17. 08 12月, 2009 1 次提交
  18. 19 11月, 2009 1 次提交
    • S
      ceph: negotiate authentication protocol; implement AUTH_NONE protocol · 4e7a5dcd
      Sage Weil 提交于
      When we open a monitor session, we send an initial AUTH message listing
      the auth protocols we support, our entity name, and (possibly) a previously
      assigned global_id.  The monitor chooses a protocol and responds with an
      initial message.
      
      Initially implement AUTH_NONE, a dummy protocol that provides no security,
      but works within the new framework.  It generates 'authorizers' that are
      used when connecting to (mds, osd) services that simply state our entity
      name and global_id.
      
      This is a wire protocol change.
      Signed-off-by: NSage Weil <sage@newdream.net>
      4e7a5dcd
  19. 13 11月, 2009 1 次提交
  20. 07 10月, 2009 1 次提交
    • S
      ceph: OSD client · f24e9980
      Sage Weil 提交于
      The OSD client is responsible for reading and writing data from/to the
      object storage pool.  This includes determining where objects are
      stored in the cluster, and ensuring that requests are retried or
      redirected in the event of a node failure or data migration.
      
      If an OSD does not respond before a timeout expires, keepalive
      messages are sent across the lossless, ordered communications channel
      to ensure that any break in the TCP is discovered.  If the session
      does reset, a reconnection is attempted and affected requests are
      resent (by the message transport layer).
      Signed-off-by: NSage Weil <sage@newdream.net>
      f24e9980