[Devel] [PATCH v5 6/6] allow for distro-specific fix ups at creation time.

Kir Kolyshkin kir at openvz.org
Sun May 19 10:48:57 PDT 2013


On 05/17/2013 11:54 PM, Glauber Costa wrote:
>>> +{
>>> +    char buf[STR_SIZE];
>>> +
>>> +    /* Distributions that don't need the fixup will can stop right
>>> here */
>>> +    if (!actions || !actions->ct_fixup)
>>> +        return 0;
>>> +
>>> +    if (snprintf(buf, sizeof(buf), "%s/%s", root,
>>> "/etc/rc3.d/S00vz-fixups.sh") < 0)
>> Again and again :(
>> How this snprintf can return negative value?
>>
> Will change.
>
>>> +        goto out;
>>> +
>>> +    if (open(buf, O_RDWR|O_CREAT, 0) < 0)
>>> +        goto out;
>>> +
>>> +    if (mount(actions->ct_fixup, buf, "", MS_BIND, 0) < 0)
>>> +        goto out;
>> Please remind me why are you bind-mounting rather than just copying the
>> file?
>>
> Because I believe it to be more robust this way. The user won't be able
> to accidentally delete it, mess with permissions, etc. IOW, this is to
> to make it all temporary and avoid changing the container permanently.

OK, makes sense.

>
>>> +
>>> +    /*
>>> +     * Being safe never killed anyone...
>>> +     * We bind mount instead of symlinking the original rc3 so it
>>> won't appear in the original
>>> +     * private mount.
>>> +     */
>>> +    if (snprintf(buf, sizeof(buf), "%s/%s", root,
>>> "/etc/rc5.d/S00vz-fixups.sh") < 0)
>>> +        goto out;
>>> +
>>> +    if (open(buf, O_RDWR|O_CREAT, 0) < 0)
>>> +        goto out;
>>> +
>>> +    if (mount(actions->ct_fixup, buf, "", MS_BIND, 0) < 0)
>>> +        goto out;
>> This is copy-pasting. Can you at least redo this with something like
>>
>> char *dirs[] = {"/etc/rc3.d", "/etc/rc5.d"};
>>
>> for(i = 0; i < ARRAY_SIZE(dirs); i++) {
>>          bla bla bla
>> }
>>
> Yes.
>




More information about the Devel mailing list