[Sheepdog] [PATCH v4 6/6] remove oids from object list cache when deleting a vdi

levin li levin108 at gmail.com
Fri May 4 04:26:36 CEST 2012


On 05/04/2012 03:59 AM, MORITA Kazutaka wrote:
> At Thu,  3 May 2012 18:25:49 +0800,
> levin li wrote:
>> Cluster recovery may cause objects migrated from one node
>> to another, but the object list cache doesn't change, when
>> deleting an object we can not find the right node in whose
>> cache the id stays, so we need to notify the deletion list
>> to all the node to make them delete the specified object id
>> from object list cache.
>>
>> Signed-off-by: levin li<xingke.lwp at taobao.com>
>> ---
>>   include/sheep.h           |    1 +
>>   sheep/object_list_cache.c |   17 ++++++++++++++
>>   sheep/ops.c               |   17 ++++++++++++++
>>   sheep/sheep_priv.h        |    1 +
>>   sheep/vdi.c               |   57 ++++++++++++++++++++++++++++++++++++++++++---
>>   5 files changed, 90 insertions(+), 3 deletions(-)
> I don't like the idea to call process_main() in worker threads since
> we shouldn't make the current thread model more complicated.  In
> addition, it is not good to take a long time in the cluster operations
> even if it is in the worker threads because it blocks the succeeding
> events (e.g. vdi creation) for a long time.
>
> I guess it is better to create another work queue, and call
> queue_work() in process_main() of SD_OP_NOTIFY_VDI_DEL like
> start_deletion().  I wonder there would be other simpler and different
> approaches, though.
>
> Thanks,
>
> Kazutaka
Creating a work queue seems a good idea, or maybe we can reuse
the current deletion_queue, I'd try this, since it's more
acceptable than change the thread model.

thanks,

levin



More information about the sheepdog mailing list