Re: [PATCH 4/9] fsfreeze: emergency thaw will deadlock on s_umount

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue 09-10-12 14:07:52, Fernando Luis Vazquez Cao wrote:
> >>diff -urNp linux-3.6.0-rc7-orig/fs/buffer.c linux-3.6.0-rc7/fs/buffer.c
> >>--- linux-3.6.0-rc7-orig/fs/buffer.c	2012-09-26 13:20:14.842365056 +0900
> >>+++ linux-3.6.0-rc7/fs/buffer.c	2012-09-26 15:02:22.630595704 +0900
...
> >What I would put here is:
> >	if (!res) {
> >		deactivate_locked_super(sb);
> >		/*
> >		 * We have to re-acquire s_umount because
> >		 * iterate_supers_write() will unlock it. It still holds
> >		 * passive reference so sb cannot be freed under us.
> >		 */
> >		down_write(&sb->s_umount);
> >	}
> >	
> >Is there any problem with this I miss?
> 
> The reason  I wrote the code as I did is that I did not want to re-acquire
> s_umount in the normal case (s_active >= 2 entering the if statement).
> 
> What about combining our approaches and doing something like this?:
> 
> if (!res && !atomic_add_unless(&sb->s_active, -1, 1)) {
>      deactivate_locked_super(sb);
>      down_write(&sb->s_umount);
> }
  Well, we are speaking about emergency thaw code. That's no performance
critical path by any means so I'd trade code simplicity for speed as much
as possible. atomic_add_unless() makes you think twice what the hell we are
doing here so I'd avoid it...

								Honza
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux