Subject: Re: [patch] cgroup fs: avoid switching ->d_op on live dentry

From: Al Viro <[email-masked]>
Date: Tue, 21 Dec 2010 18:25:51 +0000

On Tue, Dec 21, 2010 at 07:55:38PM +1100, Nick Piggin 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;

How about not doing that d_set_d_op() at all?  See #d_op in vfs-2.6.git;
just set ->s_d_op to that once and be done with that.  No need to reassign
it on a live dentry...