2015-12-27 20:48 GMT+08:00 Dong Wu <archer.wudong@xxxxxxxxx>: > Hi, > When add osd or remove osd, ceph will backfill to rebalance data. > eg: > - pg1.0 [1, 2, 3] > - add an osd(eg. osd.7) > - ceph start backfill, then pg1.0 osd set changes to [1, 2, 7] > - if [a, b, c, d, e] are objects needing to backfill to osd.7 and now > object a is backfilling > - when a write io hits object a, then the io needs to wait for its > complete, then goes on. > - but if io hits object b which has not been backfilled, io reaches > osd.1, then osd.1 send the io to osd.2 and osd.7, but osd.7 does not > have object b, so osd.7 needs to wait for object b to backfilled, then > write. Is it right? Or osd.1 only send the io to osd.2, not both? I think in this case, when the write of object b reaches osd.1, it holds the client write, raises the priority of the recovery of object b, and kick off the recovery of it. When the recovery of object b is done, it requeue the client write, and then everything goes like usual. > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html