2005-11-02 08:43:04

by Hareesh Nagarajan

[permalink] [raw]
Subject: [PATCH] register_filesystem() must return -EEXIST if the filesystem with the same name is already registered

If we have a look at the register_filesystem() function defined in
fs/filesystems.c, we see that if a filesystem with a same name has
already been registered then the find_filesystem() function will return
NON-NULL otherwise it will return NULL.

Hence, register_filesystem() should return EEXIST instead of EBUSY.
Returning EBUSY is misleading (unless of course I'm missing something
obvious) to the caller of register_filesystem().

Thanks,

Hareesh Nagarajan


Attachments:
err-register-filesystem.patch (334.00 B)

2005-11-02 09:07:07

by Qi Yong

[permalink] [raw]
Subject: Re: [PATCH] register_filesystem() must return -EEXIST if the filesystem with the same name is already registered

On Wed, Nov 02, 2005 at 02:42:12AM -0600, Hareesh Nagarajan wrote:
> If we have a look at the register_filesystem() function defined in
> fs/filesystems.c, we see that if a filesystem with a same name has
> already been registered then the find_filesystem() function will return
> NON-NULL otherwise it will return NULL.
>
> Hence, register_filesystem() should return EEXIST instead of EBUSY.
> Returning EBUSY is misleading (unless of course I'm missing something
> obvious) to the caller of register_filesystem().

This `slot' is buy, so EBUSY makes sense. Filesytem is not file, hence
EEXIST doesn't apply IMHO.

Coywolf

>
> Thanks,
>
> Hareesh Nagarajan
>

> --- linux-2.6.13.4/fs/filesystems.c 2005-10-10 13:54:29.000000000 -0500
> +++ linux-2.6.13.4-edit/fs/filesystems.c 2005-11-02 02:33:30.685600000 -0600
> @@ -76,7 +76,7 @@
> write_lock(&file_systems_lock);
> p = find_filesystem(fs->name);
> if (*p)
> - res = -EBUSY;
> + res = -EEXIST;
> else
> *p = fs;
> write_unlock(&file_systems_lock);

2005-11-02 09:12:39

by Qi Yong

[permalink] [raw]
Subject: Re: [PATCH] register_filesystem() must return -EEXIST if the filesystem with the same name is already registered

On Wed, Nov 02, 2005 at 05:06:56PM +0800, Coywolf Qi Hunt wrote:
> On Wed, Nov 02, 2005 at 02:42:12AM -0600, Hareesh Nagarajan wrote:
> > If we have a look at the register_filesystem() function defined in
> > fs/filesystems.c, we see that if a filesystem with a same name has
> > already been registered then the find_filesystem() function will return
> > NON-NULL otherwise it will return NULL.
> >
> > Hence, register_filesystem() should return EEXIST instead of EBUSY.
> > Returning EBUSY is misleading (unless of course I'm missing something
> > obvious) to the caller of register_filesystem().
>
> This `slot' is buy, so EBUSY makes sense. Filesytem is not file, hence

s/buy/busy/

> EEXIST doesn't apply IMHO.
>
> Coywolf
>
> >
> > Thanks,
> >
> > Hareesh Nagarajan
> >
>
> > --- linux-2.6.13.4/fs/filesystems.c 2005-10-10 13:54:29.000000000 -0500
> > +++ linux-2.6.13.4-edit/fs/filesystems.c 2005-11-02 02:33:30.685600000 -0600
> > @@ -76,7 +76,7 @@
> > write_lock(&file_systems_lock);
> > p = find_filesystem(fs->name);
> > if (*p)
> > - res = -EBUSY;
> > + res = -EEXIST;
> > else
> > *p = fs;
> > write_unlock(&file_systems_lock);

2005-11-02 17:38:33

by Hareesh Nagarajan

[permalink] [raw]
Subject: Re: [PATCH] register_filesystem() must return -EEXIST if the filesystem with the same name is already registered

Coywolf Qi Hunt wrote:
> On Wed, Nov 02, 2005 at 02:42:12AM -0600, Hareesh Nagarajan wrote:
>> If we have a look at the register_filesystem() function defined in
>> fs/filesystems.c, we see that if a filesystem with a same name has
>> already been registered then the find_filesystem() function will return
>> NON-NULL otherwise it will return NULL.
>>
>> Hence, register_filesystem() should return EEXIST instead of EBUSY.
>> Returning EBUSY is misleading (unless of course I'm missing something
>> obvious) to the caller of register_filesystem().
>
> This `slot' is buy, so EBUSY makes sense. Filesytem is not file, hence
> EEXIST doesn't apply IMHO.

Earlier this week, my calls to register_filesystem(struct
file_system_type * fs) were failing returning an -EBUSY. Now I didn't
know if it was failing because of:
if (fs->next) return -EBUSY;
Or:
p = find_filesystem(fs->name);
if (*p) res = -EBUSY;
...
return res;

It is for this reason I thought it would make sense to differentiate
between the two points of failure.

Hareesh Nagarajan