Re: [PATCH, RFC] Remove fasync() BKL usage, take 3325

Andi Kleen
2009-01-22T15:54:27Z

> OK, replacing a lock_kernel() with a spin_lock(&global_lock) is pretty
> straightforwad. But it's really really sad. It basically leaves a great
> big FIXME in there. It'd be better to fix it.

Also it might be that it's even worse than the BKL.

>
> We don't have a handy lock in struct file which could be borrowed.
>
> - We could add one
>
> - We could borrow file->f_path.dentry->d_inode->i_lock
>
> - We could convert that field to long and use bitops (sounds nice?)

It would still require a bitlock because some state in the low
level fasync needs to be protected.

Oleg has a proposal to do this using a flag bit which seemed
reasonable to me.

-Andi