30 Jan, 2013

1 commit


18 Jan, 2013

1 commit

  • Add libceph support for a new CRUSH tunable recently added to Ceph servers.

    Consider the CRUSH rule
    step chooseleaf firstn 0 type

    This rule means that replicas will be chosen in a manner such that
    each chosen leaf's branch will contain a unique instance of .

    When an object is re-replicated after a leaf failure, if the CRUSH map uses
    a chooseleaf rule the remapped replica ends up under the bucket
    that held the failed leaf. This causes uneven data distribution across the
    storage cluster, to the point that when all the leaves but one fail under a
    particular bucket, that remaining leaf holds all the data from
    its failed peers.

    This behavior also limits the number of peers that can participate in the
    re-replication of the data held by the failed leaf, which increases the
    time required to re-replicate after a failure.

    For a chooseleaf CRUSH rule, the tree descent has two steps: call them the
    inner and outer descents.

    If the tree descent down to is the outer descent, and the descent
    from down to a leaf is the inner descent, the issue is that a
    down leaf is detected on the inner descent, so only the inner descent is
    retried.

    In order to disperse re-replicated data as widely as possible across a
    storage cluster after a failure, we want to retry the outer descent. So,
    fix up crush_choose() to allow the inner descent to return immediately on
    choosing a failed leaf. Wire this up as a new CRUSH tunable.

    Note that after this change, for a chooseleaf rule, if the primary OSD
    in a placement group has failed, choosing a replacement may result in
    one of the other OSDs in the PG colliding with the new primary. This
    requires that OSD's data for that PG to need moving as well. This
    seems unavoidable but should be relatively rare.

    This corresponds to ceph.git commit 88f218181a9e6d2292e2697fc93797d0f6d6e5dc.

    Signed-off-by: Jim Schutt
    Reviewed-by: Sage Weil

    Jim Schutt
     

03 Oct, 2012

1 commit


31 Jul, 2012

1 commit

  • The server side recently added support for tuning some magic
    crush variables. Decode these variables if they are present, or use the
    default values if they are not present.

    Corresponds to ceph.git commit 89af369c25f274fe62ef730e5e8aad0c54f1e5a5.

    Signed-off-by: caleb miles
    Reviewed-by: Sage Weil
    Reviewed-by: Alex Elder
    Reviewed-by: Yehuda Sadeh

    Sage Weil
     

08 May, 2012

4 commits

  • Fix the node weight lookup for tree buckets by using a correct accessor.

    Reflects ceph.git commit d287ade5bcbdca82a3aef145b92924cf1e856733.

    Reviewed-by: Alex Elder
    Signed-off-by: Sage Weil

    Sage Weil
     
  • These were used for the ill-fated forcefeed feature. Remove them.

    Reflects ceph.git commit ebdf80edfecfbd5a842b71fbe5732857994380c1.

    Reviewed-by: Alex Elder
    Signed-off-by: Sage Weil

    Sage Weil
     
  • Remove forcefeed functionality from CRUSH. This is an ugly misfeature that
    is mostly useless and unused. Remove it.

    Reflects ceph.git commit ed974b5000f2851207d860a651809af4a1867942.

    Reviewed-by: Alex Elder
    Signed-off-by: Sage Weil

    Conflicts:

    net/ceph/crush/mapper.c

    Sage Weil
     
  • Move various types from int -> __u32 (or similar), and add const as
    appropriate.

    This reflects changes that have been present in the userland implementation
    for some time.

    Reviewed-by: Alex Elder
    Signed-off-by: Sage Weil

    Sage Weil
     

21 Oct, 2010

1 commit

  • This factors out protocol and low-level storage parts of ceph into a
    separate libceph module living in net/ceph and include/linux/ceph. This
    is mostly a matter of moving files around. However, a few key pieces
    of the interface change as well:

    - ceph_client becomes ceph_fs_client and ceph_client, where the latter
    captures the mon and osd clients, and the fs_client gets the mds client
    and file system specific pieces.
    - Mount option parsing and debugfs setup is correspondingly broken into
    two pieces.
    - The mon client gets a generic handler callback for otherwise unknown
    messages (mds map, in this case).
    - The basic supported/required feature bits can be expanded (and are by
    ceph_fs_client).

    No functional change, aside from some subtle error handling cases that got
    cleaned up in the refactoring process.

    Signed-off-by: Sage Weil

    Yehuda Sadeh