Quoting Oren Laadan (orenl@xxxxxxxxxxxxxxx): > > > Serge E. Hallyn wrote: > > Quoting Oren Laadan (orenl@xxxxxxxxxxxxxxx): > >> --- a/checkpoint/Makefile > >> +++ b/checkpoint/Makefile > >> @@ -2,8 +2,8 @@ > >> # Makefile for linux checkpoint/restart. > >> # > >> > >> -obj-$(CONFIG_CHECKPOINT) += sys.o objhash.o \ > >> +obj-$(CONFIG_CHECKPOINT) += sys.o objhash.o deferqueue.o \ > >> checkpoint.o restart.o \ > >> ckpt_task.o rstr_task.o \ > >> ckpt_mem.o rstr_mem.o \ > >> - ckpt_file.o rstr_file.o > >> + ckpt_file.o rstr_file.o \ > > > > ? > > > >> +int cr_deferqueue_add(struct cr_ctx *ctx, cr_deferqueue_func_t function, > >> + unsigned int flags, void *data, int size) > >> +{ > >> + struct cr_deferqueue *wq; > >> + > >> + wq = kmalloc(sizeof(wq) + size, GFP_KERNEL); > >> + if (!wq) > >> + return -ENOMEM; > >> + > >> + wq->function = function; > >> + wq->flags = flags; > >> + memcpy(wq->data, data, size); > >> + > >> + cr_debug("adding work %p function %p\n", wq, wq->function); > >> + list_add_tail(&ctx->deferqueue, &wq->list); > >> + return 0; > >> +} > > > > Shouldn't the deferqueue be protected by a spinlock here? > > Not until we implement concurrent checkpoint/restart. At the moment > it's one task at a time the can access it. That's too bad. I think this woudl be better done as a single simple patch addin ga new generic deferqueue mechanism for all to use, with a per-queue spinlock protecting both _add and _run -serge _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers