Re: [RFC][PATCHSET] sorting out RCU-delayed stuff in ->destroy_inode()

2019-04-30 Thread Al Viro
On Tue, Apr 30, 2019 at 05:00:43AM +0100, Al Viro wrote: > Where would you put that synchronize_rcu()? Doing that before ->put_super() > is too early - inode references might be dropped in there. OTOH, doing > that after that point means that while struct super_block itself will be > there, any

Re: [RFC][PATCHSET] sorting out RCU-delayed stuff in ->destroy_inode()

2019-04-29 Thread Andreas Dilger
> On Apr 29, 2019, at 10:26 PM, Al Viro wrote: > > On Mon, Apr 29, 2019 at 10:18:04PM -0600, Andreas Dilger wrote: >>> >>> void*i_private; /* fs or device private pointer */ >>> + void (*free_inode)(struct inode *); >> >> It seems like a waste to increase the size of

Re: [RFC][PATCHSET] sorting out RCU-delayed stuff in ->destroy_inode()

2019-04-29 Thread Al Viro
On Mon, Apr 29, 2019 at 10:18:04PM -0600, Andreas Dilger wrote: > > > > void*i_private; /* fs or device private pointer */ > > + void (*free_inode)(struct inode *); > > It seems like a waste to increase the size of every struct inode just to > access > a static pointer.

Re: [RFC][PATCHSET] sorting out RCU-delayed stuff in ->destroy_inode()

2019-04-29 Thread Andreas Dilger
On Apr 29, 2019, at 9:09 PM, Al Viro wrote: > > On Tue, Apr 16, 2019 at 11:01:16AM -0700, Linus Torvalds wrote: >> >> I only skimmed through the actual filesystem (and one networking) >> patches, but they looked like trivial conversions to a better >> interface. > > ... except that this callbac

Re: [RFC][PATCHSET] sorting out RCU-delayed stuff in ->destroy_inode()

2019-04-29 Thread Al Viro
On Mon, Apr 29, 2019 at 08:37:29PM -0700, Linus Torvalds wrote: > On Mon, Apr 29, 2019, 20:09 Al Viro wrote: > > > > > ... except that this callback can (and always could) get executed after > > freeing struct super_block. > > > > Ugh. > > That food looks nasty. Shouldn't the super block freein

Re: [RFC][PATCHSET] sorting out RCU-delayed stuff in ->destroy_inode()

2019-04-29 Thread Al Viro
On Tue, Apr 16, 2019 at 11:01:16AM -0700, Linus Torvalds wrote: > On Tue, Apr 16, 2019 at 10:49 AM Al Viro wrote: > > > > 83 files changed, 241 insertions(+), 516 deletions(-) > > I think this single line is pretty convincing on its own. Ignoring > docs and fs/inode.c, we have > > 80 files cha

Re: [RFC][PATCHSET] sorting out RCU-delayed stuff in ->destroy_inode()

2019-04-17 Thread David Sterba
On Tue, Apr 16, 2019 at 06:49:00PM +0100, Al Viro wrote: > We have a lot of boilerplate in ->destroy_inode() > instances, and several filesystems got the things wrong > in that area. The patchset below attempts to deal with that. > > New method (void ->free_inode(inode)) is introduced

Re: [RFC][PATCHSET] sorting out RCU-delayed stuff in ->destroy_inode()

2019-04-16 Thread Linus Torvalds
On Tue, Apr 16, 2019 at 10:49 AM Al Viro wrote: > > 83 files changed, 241 insertions(+), 516 deletions(-) I think this single line is pretty convincing on its own. Ignoring docs and fs/inode.c, we have 80 files changed, 190 insertions(+), 494 deletions(-) IOW, just over 300 lines of boiler pl

[RFC][PATCHSET] sorting out RCU-delayed stuff in ->destroy_inode()

2019-04-16 Thread Al Viro
We have a lot of boilerplate in ->destroy_inode() instances, and several filesystems got the things wrong in that area. The patchset below attempts to deal with that. New method (void ->free_inode(inode)) is introduced, and RCU-delayed parts of ->destroy_inode() are moved there. T