Messages in this thread |  | | | Date | Fri, 13 Jun 2008 10:04:57 +0300 | | From | Pekka Enberg <> | | Subject | Re: [PATCH 3/3] relay: Add buffer-only channels; useful for early logging. | |
Hi Eduard,
Eduard - Gabriel Munteanu wrote:
> @@ -578,12 +592,15 @@ struct rchan *relay_open(const char *base_filename,
> chan->alloc_size = FIX_SIZE(subbuf_size * n_subbufs);
> chan->parent = parent;
> chan->private_data = private_data;
> - strlcpy(chan->base_filename, base_filename, NAME_MAX);
> + if (base_filename) {
> + chan->has_base_filename = 1;
> + strlcpy(chan->base_filename, base_filename, NAME_MAX);
> + }
> setup_callbacks(chan, cb);
> kref_init(&chan->kref);
>
> mutex_lock(&relay_channels_mutex);
> - for_each_online_cpu(i) {
> + for_each_present_cpu(i) {
> chan->buf[i] = relay_open_buf(chan, i);
> if (!chan->buf[i])
> goto free_bufs;
> @@ -594,7 +611,7 @@ struct rchan *relay_open(const char *base_filename,
> return chan;
>
> free_bufs:
> - for_each_online_cpu(i) {
> + for_each_present_cpu(i) {
> if (!chan->buf[i])
> break;
> relay_close_buf(chan->buf[i]);
Why do we need to change for_each_online_cpu to for_each_present_cpu?
I guess it's because we don't have all the CPUs online at early
boot? Wouldn't it then be better to implement CPU hotplug support
instead?
Pekka
|  |