Deferred deletion of ObjectContext

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sam,

I've amended https://github.com/ceph/ceph/pull/414 with

https://github.com/dachary/ceph/commit/66e42d0ec29ffdd2edc225f4090a132a50d9665b#L0R4668

  bool locked = is_locked();
  if (!locked)
    lock();

  if (obc->ssc)
    put_snapset_context(obc->ssc);

  if (object_contexts.empty())
    kick();

  if (!locked)
    unlock();

This callback may be called at any time and it is not possible to assume the PG is locked when it happens. With manual reference counting, this part of code was guaranteed to be called when the PG was locked. PG::lock() is called at the beginning and PG::unlock() at the end to provide the same guarantee.

It runs ok with https://github.com/ceph/ceph/pull/414#issuecomment-22705040 and https://github.com/ceph/ceph/pull/414#issuecomment-22705040 . If it sounds reasonable to you I'll schedule another rados suite. 

Cheers

-- 
Loïc Dachary, Artisan Logiciel Libre
All that is necessary for the triumph of evil is that good people do nothing.

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux