2002-01-05 04:06:33

by Alexander Viro

[permalink] [raw]
Subject: [FIX] missing piece from fs/super.c in -pre8

/me scratches head wondering how the ^*#! did it manage to disappear
from the version of patch sent to Linus...

--- S2-pre8/fs/super.c Fri Jan 4 22:59:27 2002
+++ linux/fs/super.c Fri Jan 4 23:02:06 2002
@@ -718,6 +718,10 @@
s->s_bdev = bdev;
s->s_flags = flags;
insert_super(s, fs_type);
+ error = -ENOMEM;
+ s->s_id = kmalloc(32, GFP_KERNEL);
+ if (!s->s_id)
+ goto failed;
strncpy(s->s_id, bdevname(dev), sizeof(s->s_id));
error = -EINVAL;
if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0))


2002-01-05 04:11:53

by Alexander Viro

[permalink] [raw]
Subject: Re: [FIX] missing piece from fs/super.c in -pre8



On Fri, 4 Jan 2002, Alexander Viro wrote:

> /me scratches head wondering how the ^*#! did it manage to disappear
> from the version of patch sent to Linus...

After another look... I see what had happened, but...

Linus, I doubt that making the thing inline was a good idea. Reason: for
filesystems like NFS we almost definitely want something like server name
+ root path to identify the superblock. And that can easily grow past
32 bytes.

2002-01-05 04:20:34

by Linus Torvalds

[permalink] [raw]
Subject: Re: [FIX] missing piece from fs/super.c in -pre8


On Fri, 4 Jan 2002, Alexander Viro wrote:
>
> Linus, I doubt that making the thing inline was a good idea. Reason: for
> filesystems like NFS we almost definitely want something like server name
> + root path to identify the superblock. And that can easily grow past
> 32 bytes.

Since it is only used for printouts, I'd much rather have simpler code.
Especially since I couldn't convince myself that all users in your version
even initialized the dang pointer.

There is nothing wrong with having a requirement that informational stuff
be limited to X characters..

Linus

2002-01-05 04:27:33

by Alexander Viro

[permalink] [raw]
Subject: Re: [FIX] missing piece from fs/super.c in -pre8



On Fri, 4 Jan 2002, Linus Torvalds wrote:

>
> On Fri, 4 Jan 2002, Alexander Viro wrote:
> >
> > Linus, I doubt that making the thing inline was a good idea. Reason: for
> > filesystems like NFS we almost definitely want something like server name
> > + root path to identify the superblock. And that can easily grow past
> > 32 bytes.
>
> Since it is only used for printouts, I'd much rather have simpler code.
> Especially since I couldn't convince myself that all users in your version
> even initialized the dang pointer.

Set to NULL when we allocate superblock.
Allocated and set by get_sb_bdev() (which takes care of block filesystems)
Allocated and set by nfs_read_super() (which takes care of NFS).
That covers all users...

> There is nothing wrong with having a requirement that informational stuff
> be limited to X characters..

In principle - yes...

2002-01-05 11:42:24

by Urban Widmark

[permalink] [raw]
Subject: Re: [FIX] missing piece from fs/super.c in -pre8

On Fri, 4 Jan 2002, Linus Torvalds wrote:

>
> On Fri, 4 Jan 2002, Alexander Viro wrote:
> >
> > Linus, I doubt that making the thing inline was a good idea. Reason: for
> > filesystems like NFS we almost definitely want something like server name
> > + root path to identify the superblock. And that can easily grow past
> > 32 bytes.
>
> Since it is only used for printouts, I'd much rather have simpler code.

FWIW, smbfs will want to know the servername + "share" used to mount it.
It will use that info to get smbconnect to do the proper magic to get a
new connection. So it doesn't have to be just printouts.

If this field is meant to be accessed by the fs code then I could put that
info there. Or someone could set it to dev_name in get_sb_nodev (if that
string is what I think it is).

Or I can do what I do now and pass it as a separate option and keep it in
a smbfs private area.

/Urban