[systemd-devel] [patch] cgroup fs: avoid switching ->d_op on live dentry

Sedat Dilek sedat.dilek at googlemail.com
Tue Dec 21 05:35:05 PST 2010


On Tue, Dec 21, 2010 at 9:55 AM, Nick Piggin <npiggin at kernel.dk> wrote:
> On Tue, Dec 21, 2010 at 09:44:40AM +0100, Sedat Dilek wrote:
>> Against linux-next (next-20101210) it should look like:
>
> Yep, I'll rebase my tree with the fix shortly.
>
>>
>> $ diff -Naur cgroup-fix/cgroup-fs-avoid-switching-d_op-on-live-dentry.patch
>> cgroup-fix/cgroup-fs-avoid-switching-d_op-on-live-dentry-v2.patch
>> --- cgroup-fix/cgroup-fs-avoid-switching-d_op-on-live-dentry.patch
>>  2010-12-21 09:31:38.649601964 +0100
>> +++ cgroup-fix/cgroup-fs-avoid-switching-d_op-on-live-dentry-v2.patch
>>  2010-12-21 09:40:21.151033232 +0100
>> @@ -83,7 +83,7 @@
>>                 inode->i_size = 0;
>>                 inode->i_fop = &cgroup_file_operations;
>>         }
>> --      dentry->d_op = &cgroup_dops;
>> +-      d_set_d_op(dentry, &cgroup_dops);
>>         d_instantiate(dentry, inode);
>>         dget(dentry);   /* Extra count - pin the dentry in core */
>>         return 0;
>>
>> - Sedat -
>

I just started the compilation due to slow kernel mirrors, I see this warning:

$ egrep 'kernel/cgroup.o|kernel/cgroup.c'
build_linux-next_next20101221.dileks.1.log
  CC      kernel/cgroup.o
/home/sd/src/linux-2.6/linux-2.6.37-rc6/debian/build/source_i386_none/kernel/cgroup.c:
In function ‘cgroup_lookup’:
/home/sd/src/linux-2.6/linux-2.6.37-rc6/debian/build/source_i386_none/kernel/cgroup.c:2219:3:
warning: initialization from incompatible pointer type

[ kernel/cgroup.c ]
...
static int cgroup_delete_dentry(struct dentry *dentry)
{
        return 1;
}

static struct dentry *cgroup_lookup(struct inode *dir,
                        struct dentry *dentry, struct nameidata *nd)
{
        static const struct dentry_operations cgroup_dentry_operations = {
                .d_delete = cgroup_delete_dentry, <--- LINE #2219
                .d_iput = cgroup_diput,
        };

        if (dentry->d_name.len > NAME_MAX)
                return ERR_PTR(-ENAMETOOLONG);
        dentry->d_op = &cgroup_dentry_operations;
        d_add(dentry, NULL);
        return NULL;
}
...

Can you fix that with your rebasing, too?
Thanks in advance.

- Sedat -


More information about the systemd-devel mailing list