On Sat, 24 Mar 2001, Jorgen Cederlof wrote:
> > kill_super() releases the reference stored in ->s_type (created
> > by get_sb_...()). If superblock stays alive you should not release it.
>
> get_sb_...() will do get_filesystem() even if superblock stays alive.
Sigh... I see what happens, and
> > if (list_empty(&sb->s_mounts))
> > kill_super(sb, 0);
> > + else
> > + put_filesystem(fstype);
> > goto unlock_out;
> Reference acquired by get_fs_type() is
> released by put_filesystem() (near fs_out), _NOT_ by kill_super().
Yes.
> kill_super() re
On Sat, 24 Mar 2001, Jorgen Cederlof wrote:
> if (list_empty(&sb->s_mounts))
> kill_super(sb, 0);
> + else
> + put_filesystem(fstype);
> goto unlock_out;
That's completely wrong. Reference acquired by get_fs_type() is
released by put_filesystem() (near
do_mount() can sometimes fail to mount a filesystem, but still
increment the filesystem module count.
This patch against 2.4.2 should fix the problem.
Jörgen
--- fs/super.c.orig Sun Mar 11 20:25:26 2001
+++ fs/super.c Sun Mar 11 20:05:27 2001
@@ -1414,6 +1414,8 @@
fail:
if
4 matches
Mail list logo