2011-11-29 00:19:41

by Boaz Harrosh

[permalink] [raw]
Subject: ore: FIX breakage when MISC_FILESYSTEMS is not set


As Reported by Randy Dunlap

When MISC_FILESYSTEMS is not enabled:

fs/built-in.o: In function `objio_alloc_io_state':
objio_osd.c:(.text+0xcb525): undefined reference to `ore_get_rw_state'
fs/built-in.o: In function `_write_done':
objio_osd.c:(.text+0xcb58d): undefined reference to `ore_check_io'
fs/built-in.o: In function `_read_done':
...

When MISC_FILESYSTEMS, which is more of a GUI thing then anything else,
is not selected. exofs/Kconfig is never examined during Kconfig,
and it can not do it's magic stuff to automatically select everything
needed.

The solution is to force all users of ORE (exofs, nfs) to manually
select everything auto-magically selected before.

(This is why it is a bad idea to put libraries in random parts of
the tree)

Reported-by: Randy Dunlap <[email protected]>
Signed-off-by: Boaz Harrosh <[email protected]>
---
fs/exofs/Kconfig | 17 +++++++++--------
fs/nfs/Kconfig | 2 ++
2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/fs/exofs/Kconfig b/fs/exofs/Kconfig
index da42f32..6b05d99 100644
--- a/fs/exofs/Kconfig
+++ b/fs/exofs/Kconfig
@@ -1,17 +1,18 @@
-# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
-# for every ORE user we do it like this. Any user should add itself here
-# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
-# selected here, and we default to "ON". So in effect it is like been
-# selected by any of the users.
+# ORE - Objects Raid Engine (libore.ko)
+# This library needs to be selected by it's users for example the below EXOFS
+# filesystem.
+# All users must do:
+# depends on SCSI_OSD_ULD
+# select ASYNC_XOR
+# select ORE
config ORE
tristate
- depends on EXOFS_FS || PNFS_OBJLAYOUT
- select ASYNC_XOR
- default SCSI_OSD_ULD

config EXOFS_FS
tristate "exofs: OSD based file system support"
depends on SCSI_OSD_ULD
+ select ASYNC_XOR
+ select ORE
help
EXOFS is a file system that uses an OSD storage device,
as its backing storage.
diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
index dbcd821..3708d76 100644
--- a/fs/nfs/Kconfig
+++ b/fs/nfs/Kconfig
@@ -96,6 +96,8 @@ config PNFS_BLOCK
config PNFS_OBJLAYOUT
tristate
depends on NFS_FS && NFS_V4_1 && SCSI_OSD_ULD
+ select ASYNC_XOR
+ select ORE
default m

config ROOT_NFS
--
1.7.6.4




2011-11-30 17:01:42

by Randy Dunlap

[permalink] [raw]
Subject: Re: [osd-dev] [PATCH v3] ore: FIX breakage when MISC_FILESYSTEMS is not set

On 11/29/2011 05:00 PM, Boaz Harrosh wrote:
> On 11/29/2011 03:35 PM, Boaz Harrosh wrote:
>>
>> As Reported by Randy Dunlap
>>
>
> Randy Hi
>
> I think I prefer this simple solution for now, instead of
> the complete move of the ore to lib/

sounds good to me.

> It solves the warning problem you reported and let us
> keep the convenience of selecting everything in one place. As
> was said there are more dependencies on the way.
>
> I will look into the additional ASYNC_CORE and XOR_BLOCKS selects
> you mentioned. For some reason it works but I'll try to find a
> way to break it or prove It is sound.
>
> Please advise?

I'm not terribly worried about them. If they work, that's fine.
If they break some day, it's easy to fix.
or if you prefer to fix it now, you could add something like:

# for ASYNC_XOR selects:
select ASYNC_CORE
select XOR_BLOCKS

Either way is OK with me.


Thanks.

> Thanks
> Heart
>
>> When MISC_FILESYSTEMS is not enabled:
>>
>> fs/built-in.o: In function `objio_alloc_io_state':
>> objio_osd.c:(.text+0xcb525): undefined reference to `ore_get_rw_state'
>> fs/built-in.o: In function `_write_done':
>> objio_osd.c:(.text+0xcb58d): undefined reference to `ore_check_io'
>> fs/built-in.o: In function `_read_done':
>> ...
>>
>> When MISC_FILESYSTEMS, which is more of a GUI thing then anything else,
>> is not selected. exofs/Kconfig is never examined during Kconfig,
>> and it can not do it's magic stuff to automatically select everything
>> needed.
>>
>> We must split exofs/Kconfig in two. The ore one is always included.
>> And the exofs one is left in it's old place in the menu.
>>
>> Signed-off-by: Boaz Harrosh <[email protected]>
>> ---
>> fs/Kconfig | 2 ++
>> fs/exofs/Kconfig | 11 -----------
>> fs/exofs/ore.Kconfig | 12 ++++++++++++
>> 3 files changed, 14 insertions(+), 11 deletions(-)
>> create mode 100644 fs/exofs/ore.Kconfig
>>
>> diff --git a/fs/Kconfig b/fs/Kconfig
>> index 5f4c45d..fd7bfef 100644
>> --- a/fs/Kconfig
>> +++ b/fs/Kconfig
>> @@ -218,6 +218,8 @@ source "fs/exofs/Kconfig"
>>
>> endif # MISC_FILESYSTEMS
>>
>> +source "fs/exofs/ore.Kconfig"
>> +
>> menuconfig NETWORK_FILESYSTEMS
>> bool "Network File Systems"
>> default y
>> diff --git a/fs/exofs/Kconfig b/fs/exofs/Kconfig
>> index da42f32..86194b2 100644
>> --- a/fs/exofs/Kconfig
>> +++ b/fs/exofs/Kconfig
>> @@ -1,14 +1,3 @@
>> -# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
>> -# for every ORE user we do it like this. Any user should add itself here
>> -# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
>> -# selected here, and we default to "ON". So in effect it is like been
>> -# selected by any of the users.
>> -config ORE
>> - tristate
>> - depends on EXOFS_FS || PNFS_OBJLAYOUT
>> - select ASYNC_XOR
>> - default SCSI_OSD_ULD
>> -
>> config EXOFS_FS
>> tristate "exofs: OSD based file system support"
>> depends on SCSI_OSD_ULD
>> diff --git a/fs/exofs/ore.Kconfig b/fs/exofs/ore.Kconfig
>> new file mode 100644
>> index 0000000..1ca7fb7
>> --- /dev/null
>> +++ b/fs/exofs/ore.Kconfig
>> @@ -0,0 +1,12 @@
>> +# ORE - Objects Raid Engine (libore.ko)
>> +#
>> +# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
>> +# for every ORE user we do it like this. Any user should add itself here
>> +# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
>> +# selected here, and we default to "ON". So in effect it is like been
>> +# selected by any of the users.
>> +config ORE
>> + tristate
>> + depends on EXOFS_FS || PNFS_OBJLAYOUT
>> + select ASYNC_XOR
>> + default SCSI_OSD_ULD
>
> --


--
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

2011-11-30 16:38:58

by Boaz Harrosh

[permalink] [raw]
Subject: Re: [PATCH v3] ore: FIX breakage when MISC_FILESYSTEMS is not set

On 11/30/2011 12:31 AM, Michal Marek wrote:
>
> I suggest you name it Kconfig.ore. We have a couple of Kconfig.* files
> in the tree, so let's be consistent.
>

Thanks Michal.

Yes that makes sense. Actually I like it better.
Will change and push

> Michal

Boaz

2011-11-30 08:30:50

by Michal Marek

[permalink] [raw]
Subject: Re: [PATCH v3] ore: FIX breakage when MISC_FILESYSTEMS is not set

Dne 30.11.2011 00:35, Boaz Harrosh napsal(a):
>
> As Reported by Randy Dunlap
>
> When MISC_FILESYSTEMS is not enabled:
>
> fs/built-in.o: In function `objio_alloc_io_state':
> objio_osd.c:(.text+0xcb525): undefined reference to `ore_get_rw_state'
> fs/built-in.o: In function `_write_done':
> objio_osd.c:(.text+0xcb58d): undefined reference to `ore_check_io'
> fs/built-in.o: In function `_read_done':
> ...
>
> When MISC_FILESYSTEMS, which is more of a GUI thing then anything else,
> is not selected. exofs/Kconfig is never examined during Kconfig,
> and it can not do it's magic stuff to automatically select everything
> needed.
>
> We must split exofs/Kconfig in two. The ore one is always included.
> And the exofs one is left in it's old place in the menu.
>
> Signed-off-by: Boaz Harrosh <[email protected]>
> ---
> fs/Kconfig | 2 ++
> fs/exofs/Kconfig | 11 -----------
> fs/exofs/ore.Kconfig | 12 ++++++++++++
> 3 files changed, 14 insertions(+), 11 deletions(-)
> create mode 100644 fs/exofs/ore.Kconfig
>
> diff --git a/fs/Kconfig b/fs/Kconfig
> index 5f4c45d..fd7bfef 100644
> --- a/fs/Kconfig
> +++ b/fs/Kconfig
> @@ -218,6 +218,8 @@ source "fs/exofs/Kconfig"
>
> endif # MISC_FILESYSTEMS
>
> +source "fs/exofs/ore.Kconfig"
> +

I suggest you name it Kconfig.ore. We have a couple of Kconfig.* files
in the tree, so let's be consistent.

Michal

2011-11-29 12:21:51

by Benny Halevy

[permalink] [raw]
Subject: Re: ore: FIX breakage when MISC_FILESYSTEMS is not set

On 2011-11-29 02:13, Boaz Harrosh wrote:
>
> As Reported by Randy Dunlap
>
> When MISC_FILESYSTEMS is not enabled:
>
> fs/built-in.o: In function `objio_alloc_io_state':
> objio_osd.c:(.text+0xcb525): undefined reference to `ore_get_rw_state'
> fs/built-in.o: In function `_write_done':
> objio_osd.c:(.text+0xcb58d): undefined reference to `ore_check_io'
> fs/built-in.o: In function `_read_done':
> ...
>
> When MISC_FILESYSTEMS, which is more of a GUI thing then anything else,
> is not selected. exofs/Kconfig is never examined during Kconfig,
> and it can not do it's magic stuff to automatically select everything

nit: s/it's/its/

> needed.
>
> The solution is to force all users of ORE (exofs, nfs) to manually
> select everything auto-magically selected before.

How about using "depend ORE" rather than "select ORE"?

>
> (This is why it is a bad idea to put libraries in random parts of
> the tree)
>
> Reported-by: Randy Dunlap <[email protected]>
> Signed-off-by: Boaz Harrosh <[email protected]>
> ---
> fs/exofs/Kconfig | 17 +++++++++--------
> fs/nfs/Kconfig | 2 ++
> 2 files changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/fs/exofs/Kconfig b/fs/exofs/Kconfig
> index da42f32..6b05d99 100644
> --- a/fs/exofs/Kconfig
> +++ b/fs/exofs/Kconfig
> @@ -1,17 +1,18 @@
> -# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
> -# for every ORE user we do it like this. Any user should add itself here
> -# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
> -# selected here, and we default to "ON". So in effect it is like been
> -# selected by any of the users.
> +# ORE - Objects Raid Engine (libore.ko)
> +# This library needs to be selected by it's users for example the below EXOFS
> +# filesystem.

nit:
This library needs to be selected by its users. For example, see
EXOFS_FS below.

Benny

> +# All users must do:
> +# depends on SCSI_OSD_ULD
> +# select ASYNC_XOR
> +# select ORE
> config ORE
> tristate
> - depends on EXOFS_FS || PNFS_OBJLAYOUT
> - select ASYNC_XOR
> - default SCSI_OSD_ULD
>
> config EXOFS_FS
> tristate "exofs: OSD based file system support"
> depends on SCSI_OSD_ULD
> + select ASYNC_XOR
> + select ORE
> help
> EXOFS is a file system that uses an OSD storage device,
> as its backing storage.
> diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
> index dbcd821..3708d76 100644
> --- a/fs/nfs/Kconfig
> +++ b/fs/nfs/Kconfig
> @@ -96,6 +96,8 @@ config PNFS_BLOCK
> config PNFS_OBJLAYOUT
> tristate
> depends on NFS_FS && NFS_V4_1 && SCSI_OSD_ULD
> + select ASYNC_XOR
> + select ORE
> default m
>
> config ROOT_NFS

2011-11-29 23:11:19

by Trond Myklebust

[permalink] [raw]
Subject: Re: ore: FIX breakage when MISC_FILESYSTEMS is not set

On Tue, 2011-11-29 at 17:36 -0500, Trond Myklebust wrote:
> On Tue, 2011-11-29 at 14:22 -0800, Boaz Harrosh wrote:
> > On 11/29/2011 09:33 AM, Trond Myklebust wrote:
> > > On Tue, 2011-11-29 at 14:21 +0200, Benny Halevy wrote:
> > >> On 2011-11-29 02:13, Boaz Harrosh wrote:
> >
> > >>>
> > >>> The solution is to force all users of ORE (exofs, nfs) to manually
> > >>> select everything auto-magically selected before.
> > >>
> > >> How about using "depend ORE" rather than "select ORE"?
> > >
> > > Right. Make PNFS_OBJLAYOUT and EXOFS_FS depend on ASYNC_XOR (or select
> > > it) and then make ORE depend on EXOFS_FS || PNFS_OBJLAYOUT.
> > >
> > > There should be no need to add the 'select ORE'...
> > >
> >
> > No! guys!
> >
> > One it will not solve my problem because any
> > solution that needs to inspect exofs/Kconfig file will
> > not work if MISC_FILESYSTEMS is not selected and your
> > solutions involve that.
>
> Then move ORE _out_ of MISC_FILESYSTEMS. There is no reason why it needs
> to be there as long as the things it depends on are there.

Should read:
There is no reason why ORE needs to depend on MISC_FILESYSTEMS. Only
EXOFS_FS needs that...


> > And two:
> > All the user needs to do is Select NFS4.1 everything
> > else should be done automatically. He should not need
> > to go to misc-filesystems and select ORE so he can have
> > pnfs-objects. That's a nightmare.
>
> The solution I proposed didn't involve having the user select anything
> other than NFSv4.1 and possibly ASYNC_XOR.
>
> > And anyway the current Kernel rule is that a user of a library
> > needs to select it and all it's dependencies, because select
> > is not recursive. Now I devised a little skim that can avoid
>
> ...and this is _my_ nightmare. I dont' _want_ these selects anywhere in
> the NFS subsystem.




2011-11-29 22:40:51

by Randy Dunlap

[permalink] [raw]
Subject: Re: ore: FIX breakage when MISC_FILESYSTEMS is not set

On 11/29/2011 02:22 PM, Boaz Harrosh wrote:
> On 11/29/2011 09:33 AM, Trond Myklebust wrote:
>> On Tue, 2011-11-29 at 14:21 +0200, Benny Halevy wrote:
>>> On 2011-11-29 02:13, Boaz Harrosh wrote:
>
>>>>
>>>> The solution is to force all users of ORE (exofs, nfs) to manually
>>>> select everything auto-magically selected before.
>>>
>>> How about using "depend ORE" rather than "select ORE"?
>>
>> Right. Make PNFS_OBJLAYOUT and EXOFS_FS depend on ASYNC_XOR (or select
>> it) and then make ORE depend on EXOFS_FS || PNFS_OBJLAYOUT.
>>
>> There should be no need to add the 'select ORE'...
>>
>
> No! guys!
>
> One it will not solve my problem because any
> solution that needs to inspect exofs/Kconfig file will
> not work if MISC_FILESYSTEMS is not selected and your
> solutions involve that.
>
> And two:
> All the user needs to do is Select NFS4.1 everything
> else should be done automatically. He should not need
> to go to misc-filesystems and select ORE so he can have
> pnfs-objects. That's a nightmare.
>
> And anyway the current Kernel rule is that a user of a library
> needs to select it and all it's dependencies, because select
> is not recursive. Now I devised a little skim that can avoid

Since 'select' is not recursive, how does the "select ASYNC_XOR"
handle ensuring that what it selects (ASYNC_CORE and XOR_BLOCKS)
have been enabled?

> that, which is not conventional but works very nice. It was
> almost good enough only we have the problem that exofs is under
> that big MISC_FILESYSTEMS nub.
>
> So It's the regular Kernel way, for now.
>
> (The real solution is to move ORE to lib/ which would enable my
> clever trick. But I don't want to go there only because of that)
>
> I'll fix the typos though

With the patch applied, I am still seeing this kconfig warning:

warning: (PNFS_OBJLAYOUT) selects ORE which has unmet direct dependencies (MISC_FILESYSTEMS)


--
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

2011-11-29 22:36:52

by Myklebust, Trond

[permalink] [raw]
Subject: Re: ore: FIX breakage when MISC_FILESYSTEMS is not set

On Tue, 2011-11-29 at 14:22 -0800, Boaz Harrosh wrote:
> On 11/29/2011 09:33 AM, Trond Myklebust wrote:
> > On Tue, 2011-11-29 at 14:21 +0200, Benny Halevy wrote:
> >> On 2011-11-29 02:13, Boaz Harrosh wrote:
>
> >>>
> >>> The solution is to force all users of ORE (exofs, nfs) to manually
> >>> select everything auto-magically selected before.
> >>
> >> How about using "depend ORE" rather than "select ORE"?
> >
> > Right. Make PNFS_OBJLAYOUT and EXOFS_FS depend on ASYNC_XOR (or select
> > it) and then make ORE depend on EXOFS_FS || PNFS_OBJLAYOUT.
> >
> > There should be no need to add the 'select ORE'...
> >
>
> No! guys!
>
> One it will not solve my problem because any
> solution that needs to inspect exofs/Kconfig file will
> not work if MISC_FILESYSTEMS is not selected and your
> solutions involve that.

Then move ORE _out_ of MISC_FILESYSTEMS. There is no reason why it needs
to be there as long as the things it depends on are there.

> And two:
> All the user needs to do is Select NFS4.1 everything
> else should be done automatically. He should not need
> to go to misc-filesystems and select ORE so he can have
> pnfs-objects. That's a nightmare.

The solution I proposed didn't involve having the user select anything
other than NFSv4.1 and possibly ASYNC_XOR.

> And anyway the current Kernel rule is that a user of a library
> needs to select it and all it's dependencies, because select
> is not recursive. Now I devised a little skim that can avoid

...and this is _my_ nightmare. I dont' _want_ these selects anywhere in
the NFS subsystem.

--
Trond Myklebust
Linux NFS client maintainer

NetApp
[email protected]
http://www.netapp.com


2011-11-29 17:33:45

by Myklebust, Trond

[permalink] [raw]
Subject: Re: ore: FIX breakage when MISC_FILESYSTEMS is not set

On Tue, 2011-11-29 at 14:21 +0200, Benny Halevy wrote:
> On 2011-11-29 02:13, Boaz Harrosh wrote:
> >
> > As Reported by Randy Dunlap
> >
> > When MISC_FILESYSTEMS is not enabled:
> >
> > fs/built-in.o: In function `objio_alloc_io_state':
> > objio_osd.c:(.text+0xcb525): undefined reference to `ore_get_rw_state'
> > fs/built-in.o: In function `_write_done':
> > objio_osd.c:(.text+0xcb58d): undefined reference to `ore_check_io'
> > fs/built-in.o: In function `_read_done':
> > ...
> >
> > When MISC_FILESYSTEMS, which is more of a GUI thing then anything else,
> > is not selected. exofs/Kconfig is never examined during Kconfig,
> > and it can not do it's magic stuff to automatically select everything
>
> nit: s/it's/its/
>
> > needed.
> >
> > The solution is to force all users of ORE (exofs, nfs) to manually
> > select everything auto-magically selected before.
>
> How about using "depend ORE" rather than "select ORE"?

Right. Make PNFS_OBJLAYOUT and EXOFS_FS depend on ASYNC_XOR (or select
it) and then make ORE depend on EXOFS_FS || PNFS_OBJLAYOUT.

There should be no need to add the 'select ORE'...

> > (This is why it is a bad idea to put libraries in random parts of
> > the tree)
> >
> > Reported-by: Randy Dunlap <[email protected]>
> > Signed-off-by: Boaz Harrosh <[email protected]>
> > ---
> > fs/exofs/Kconfig | 17 +++++++++--------
> > fs/nfs/Kconfig | 2 ++
> > 2 files changed, 11 insertions(+), 8 deletions(-)
> >
> > diff --git a/fs/exofs/Kconfig b/fs/exofs/Kconfig
> > index da42f32..6b05d99 100644
> > --- a/fs/exofs/Kconfig
> > +++ b/fs/exofs/Kconfig
> > @@ -1,17 +1,18 @@
> > -# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
> > -# for every ORE user we do it like this. Any user should add itself here
> > -# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
> > -# selected here, and we default to "ON". So in effect it is like been
> > -# selected by any of the users.
> > +# ORE - Objects Raid Engine (libore.ko)
> > +# This library needs to be selected by it's users for example the below EXOFS
> > +# filesystem.
>
> nit:
> This library needs to be selected by its users. For example, see
> EXOFS_FS below.
>
> Benny
>
> > +# All users must do:
> > +# depends on SCSI_OSD_ULD
> > +# select ASYNC_XOR
> > +# select ORE
> > config ORE
> > tristate

depends on EXOFS_FS || PNFS_OBJLAYOUT
default y


> >
> > config EXOFS_FS
> > tristate "exofs: OSD based file system support"

depends on SCSI_OSD_ULD && ASYNC_XOR

> > help
> > EXOFS is a file system that uses an OSD storage device,
> > as its backing storage.
> > diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
> > index dbcd821..3708d76 100644
> > --- a/fs/nfs/Kconfig
> > +++ b/fs/nfs/Kconfig
> > @@ -96,6 +96,8 @@ config PNFS_BLOCK
> > config PNFS_OBJLAYOUT
> > tristate
> > depends on NFS_FS && NFS_V4_1 && SCSI_OSD_ULD

depends on NFS_V4_1 && ASYNC_XOR && SCSI_OSD_ULD

> > default m
> >
> > config ROOT_NFS

--
Trond Myklebust
Linux NFS client maintainer

NetApp
[email protected]
http://www.netapp.com


2011-11-29 23:40:24

by Boaz Harrosh

[permalink] [raw]
Subject: Re: ore: FIX breakage when MISC_FILESYSTEMS is not set

On 11/29/2011 02:38 PM, Trond Myklebust wrote:
> Should read:
> There is no reason why ORE needs to depend on MISC_FILESYSTEMS. Only
> EXOFS_FS needs that...
>
>

OK, thanks

I sent a patch that does that (As reply to Randy).

I'll re-send it as it's own real thing

Thanks
Heart

2011-11-30 01:07:21

by Boaz Harrosh

[permalink] [raw]
Subject: Re: [osd-dev] [PATCH v3] ore: FIX breakage when MISC_FILESYSTEMS is not set

On 11/29/2011 03:35 PM, Boaz Harrosh wrote:
>
> As Reported by Randy Dunlap
>

Randy Hi

I think I prefer this simple solution for now, instead of
the complete move of the ore to lib/

It solves the warning problem you reported and let us
keep the convenience of selecting everything in one place. As
was said there are more dependencies on the way.

I will look into the additional ASYNC_CORE and XOR_BLOCKS selects
you mentioned. For some reason it works but I'll try to find a
way to break it or prove It is sound.

Please advise?

Thanks
Heart

> When MISC_FILESYSTEMS is not enabled:
>
> fs/built-in.o: In function `objio_alloc_io_state':
> objio_osd.c:(.text+0xcb525): undefined reference to `ore_get_rw_state'
> fs/built-in.o: In function `_write_done':
> objio_osd.c:(.text+0xcb58d): undefined reference to `ore_check_io'
> fs/built-in.o: In function `_read_done':
> ...
>
> When MISC_FILESYSTEMS, which is more of a GUI thing then anything else,
> is not selected. exofs/Kconfig is never examined during Kconfig,
> and it can not do it's magic stuff to automatically select everything
> needed.
>
> We must split exofs/Kconfig in two. The ore one is always included.
> And the exofs one is left in it's old place in the menu.
>
> Signed-off-by: Boaz Harrosh <[email protected]>
> ---
> fs/Kconfig | 2 ++
> fs/exofs/Kconfig | 11 -----------
> fs/exofs/ore.Kconfig | 12 ++++++++++++
> 3 files changed, 14 insertions(+), 11 deletions(-)
> create mode 100644 fs/exofs/ore.Kconfig
>
> diff --git a/fs/Kconfig b/fs/Kconfig
> index 5f4c45d..fd7bfef 100644
> --- a/fs/Kconfig
> +++ b/fs/Kconfig
> @@ -218,6 +218,8 @@ source "fs/exofs/Kconfig"
>
> endif # MISC_FILESYSTEMS
>
> +source "fs/exofs/ore.Kconfig"
> +
> menuconfig NETWORK_FILESYSTEMS
> bool "Network File Systems"
> default y
> diff --git a/fs/exofs/Kconfig b/fs/exofs/Kconfig
> index da42f32..86194b2 100644
> --- a/fs/exofs/Kconfig
> +++ b/fs/exofs/Kconfig
> @@ -1,14 +1,3 @@
> -# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
> -# for every ORE user we do it like this. Any user should add itself here
> -# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
> -# selected here, and we default to "ON". So in effect it is like been
> -# selected by any of the users.
> -config ORE
> - tristate
> - depends on EXOFS_FS || PNFS_OBJLAYOUT
> - select ASYNC_XOR
> - default SCSI_OSD_ULD
> -
> config EXOFS_FS
> tristate "exofs: OSD based file system support"
> depends on SCSI_OSD_ULD
> diff --git a/fs/exofs/ore.Kconfig b/fs/exofs/ore.Kconfig
> new file mode 100644
> index 0000000..1ca7fb7
> --- /dev/null
> +++ b/fs/exofs/ore.Kconfig
> @@ -0,0 +1,12 @@
> +# ORE - Objects Raid Engine (libore.ko)
> +#
> +# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
> +# for every ORE user we do it like this. Any user should add itself here
> +# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
> +# selected here, and we default to "ON". So in effect it is like been
> +# selected by any of the users.
> +config ORE
> + tristate
> + depends on EXOFS_FS || PNFS_OBJLAYOUT
> + select ASYNC_XOR
> + default SCSI_OSD_ULD


2011-11-29 23:42:24

by Boaz Harrosh

[permalink] [raw]
Subject: [PATCH v3] ore: FIX breakage when MISC_FILESYSTEMS is not set


As Reported by Randy Dunlap

When MISC_FILESYSTEMS is not enabled:

fs/built-in.o: In function `objio_alloc_io_state':
objio_osd.c:(.text+0xcb525): undefined reference to `ore_get_rw_state'
fs/built-in.o: In function `_write_done':
objio_osd.c:(.text+0xcb58d): undefined reference to `ore_check_io'
fs/built-in.o: In function `_read_done':
...

When MISC_FILESYSTEMS, which is more of a GUI thing then anything else,
is not selected. exofs/Kconfig is never examined during Kconfig,
and it can not do it's magic stuff to automatically select everything
needed.

We must split exofs/Kconfig in two. The ore one is always included.
And the exofs one is left in it's old place in the menu.

Signed-off-by: Boaz Harrosh <[email protected]>
---
fs/Kconfig | 2 ++
fs/exofs/Kconfig | 11 -----------
fs/exofs/ore.Kconfig | 12 ++++++++++++
3 files changed, 14 insertions(+), 11 deletions(-)
create mode 100644 fs/exofs/ore.Kconfig

diff --git a/fs/Kconfig b/fs/Kconfig
index 5f4c45d..fd7bfef 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -218,6 +218,8 @@ source "fs/exofs/Kconfig"

endif # MISC_FILESYSTEMS

+source "fs/exofs/ore.Kconfig"
+
menuconfig NETWORK_FILESYSTEMS
bool "Network File Systems"
default y
diff --git a/fs/exofs/Kconfig b/fs/exofs/Kconfig
index da42f32..86194b2 100644
--- a/fs/exofs/Kconfig
+++ b/fs/exofs/Kconfig
@@ -1,14 +1,3 @@
-# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
-# for every ORE user we do it like this. Any user should add itself here
-# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
-# selected here, and we default to "ON". So in effect it is like been
-# selected by any of the users.
-config ORE
- tristate
- depends on EXOFS_FS || PNFS_OBJLAYOUT
- select ASYNC_XOR
- default SCSI_OSD_ULD
-
config EXOFS_FS
tristate "exofs: OSD based file system support"
depends on SCSI_OSD_ULD
diff --git a/fs/exofs/ore.Kconfig b/fs/exofs/ore.Kconfig
new file mode 100644
index 0000000..1ca7fb7
--- /dev/null
+++ b/fs/exofs/ore.Kconfig
@@ -0,0 +1,12 @@
+# ORE - Objects Raid Engine (libore.ko)
+#
+# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
+# for every ORE user we do it like this. Any user should add itself here
+# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
+# selected here, and we default to "ON". So in effect it is like been
+# selected by any of the users.
+config ORE
+ tristate
+ depends on EXOFS_FS || PNFS_OBJLAYOUT
+ select ASYNC_XOR
+ default SCSI_OSD_ULD
--
1.7.6.4



2011-11-29 22:29:33

by Boaz Harrosh

[permalink] [raw]
Subject: Re: ore: FIX breakage when MISC_FILESYSTEMS is not set

On 11/29/2011 09:33 AM, Trond Myklebust wrote:
> On Tue, 2011-11-29 at 14:21 +0200, Benny Halevy wrote:
>> On 2011-11-29 02:13, Boaz Harrosh wrote:

>>>
>>> The solution is to force all users of ORE (exofs, nfs) to manually
>>> select everything auto-magically selected before.
>>
>> How about using "depend ORE" rather than "select ORE"?
>
> Right. Make PNFS_OBJLAYOUT and EXOFS_FS depend on ASYNC_XOR (or select
> it) and then make ORE depend on EXOFS_FS || PNFS_OBJLAYOUT.
>
> There should be no need to add the 'select ORE'...
>

No! guys!

One it will not solve my problem because any
solution that needs to inspect exofs/Kconfig file will
not work if MISC_FILESYSTEMS is not selected and your
solutions involve that.

And two:
All the user needs to do is Select NFS4.1 everything
else should be done automatically. He should not need
to go to misc-filesystems and select ORE so he can have
pnfs-objects. That's a nightmare.

And anyway the current Kernel rule is that a user of a library
needs to select it and all it's dependencies, because select
is not recursive. Now I devised a little skim that can avoid
that, which is not conventional but works very nice. It was
almost good enough only we have the problem that exofs is under
that big MISC_FILESYSTEMS nub.

So It's the regular Kernel way, for now.

(The real solution is to move ORE to lib/ which would enable my
clever trick. But I don't want to go there only because of that)

I'll fix the typos though

Thanks
Heart

2011-11-29 23:37:13

by Boaz Harrosh

[permalink] [raw]
Subject: Re: ore: FIX breakage when MISC_FILESYSTEMS is not set

On 11/29/2011 03:39 PM, Randy Dunlap wrote:
> On 11/29/2011 02:22 PM, Boaz Harrosh wrote:
>> On 11/29/2011 09:33 AM, Trond Myklebust wrote:
>>> On Tue, 2011-11-29 at 14:21 +0200, Benny Halevy wrote:
>>>> On 2011-11-29 02:13, Boaz Harrosh wrote:
>>
>>>>>
>>>>> The solution is to force all users of ORE (exofs, nfs) to manually
>>>>> select everything auto-magically selected before.
>>>>
>>>> How about using "depend ORE" rather than "select ORE"?
>>>
>>> Right. Make PNFS_OBJLAYOUT and EXOFS_FS depend on ASYNC_XOR (or select
>>> it) and then make ORE depend on EXOFS_FS || PNFS_OBJLAYOUT.
>>>
>>> There should be no need to add the 'select ORE'...
>>>
>>
>> No! guys!
>>
>> One it will not solve my problem because any
>> solution that needs to inspect exofs/Kconfig file will
>> not work if MISC_FILESYSTEMS is not selected and your
>> solutions involve that.
>>
>> And two:
>> All the user needs to do is Select NFS4.1 everything
>> else should be done automatically. He should not need
>> to go to misc-filesystems and select ORE so he can have
>> pnfs-objects. That's a nightmare.
>>
>> And anyway the current Kernel rule is that a user of a library
>> needs to select it and all it's dependencies, because select
>> is not recursive. Now I devised a little skim that can avoid
>
> Since 'select' is not recursive, how does the "select ASYNC_XOR"
> handle ensuring that what it selects (ASYNC_CORE and XOR_BLOCKS)
> have been enabled?
>

Not sure why it works than. I looked at config MD_RAID456
and from it's selects I only need ASYNC_XOR.
In later Kernels I will also need the RAID6_** stuff.

>> that, which is not conventional but works very nice. It was
>> almost good enough only we have the problem that exofs is under
>> that big MISC_FILESYSTEMS nub.
>>
>> So It's the regular Kernel way, for now.
>>
>> (The real solution is to move ORE to lib/ which would enable my
>> clever trick. But I don't want to go there only because of that)
>>
>> I'll fix the typos though
>
> With the patch applied, I am still seeing this kconfig warning:
>
> warning: (PNFS_OBJLAYOUT) selects ORE which has unmet direct dependencies (MISC_FILESYSTEMS)
>

OK So I guess I need a much deeper change and move ORE to lib/ or I can do the
below change.

Please advise what you think is the best for now?

Thanks Randy for yur help
---
From: Boaz Harrosh <[email protected]>
Subject: [PATCH] ore: FIX breakage when MISC_FILESYSTEMS is not set

As Reported by Randy Dunlap

When MISC_FILESYSTEMS is not enabled:

fs/built-in.o: In function `objio_alloc_io_state':
objio_osd.c:(.text+0xcb525): undefined reference to `ore_get_rw_state'
fs/built-in.o: In function `_write_done':
objio_osd.c:(.text+0xcb58d): undefined reference to `ore_check_io'
fs/built-in.o: In function `_read_done':
...

When MISC_FILESYSTEMS, which is more of a GUI thing then anything else,
is not selected. exofs/Kconfig is never examined during Kconfig,
and it can not do it's magic stuff to automatically select everything
needed.

We must split exofs/Kconfig in two the ore one is
always included and the exofs one is left in it's
old place in the menu.

Signed-off-by: Boaz Harrosh <[email protected]>
---
fs/Kconfig | 2 ++
fs/exofs/Kconfig | 11 -----------
fs/exofs/ore.Kconfig | 12 ++++++++++++
3 files changed, 14 insertions(+), 11 deletions(-)
create mode 100644 fs/exofs/ore.Kconfig

diff --git a/fs/Kconfig b/fs/Kconfig
index 5f4c45d..fd7bfef 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -218,6 +218,8 @@ source "fs/exofs/Kconfig"

endif # MISC_FILESYSTEMS

+source "fs/exofs/ore.Kconfig"
+
menuconfig NETWORK_FILESYSTEMS
bool "Network File Systems"
default y
diff --git a/fs/exofs/Kconfig b/fs/exofs/Kconfig
index da42f32..86194b2 100644
--- a/fs/exofs/Kconfig
+++ b/fs/exofs/Kconfig
@@ -1,14 +1,3 @@
-# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
-# for every ORE user we do it like this. Any user should add itself here
-# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
-# selected here, and we default to "ON". So in effect it is like been
-# selected by any of the users.
-config ORE
- tristate
- depends on EXOFS_FS || PNFS_OBJLAYOUT
- select ASYNC_XOR
- default SCSI_OSD_ULD
-
config EXOFS_FS
tristate "exofs: OSD based file system support"
depends on SCSI_OSD_ULD
diff --git a/fs/exofs/ore.Kconfig b/fs/exofs/ore.Kconfig
new file mode 100644
index 0000000..1ca7fb7
--- /dev/null
+++ b/fs/exofs/ore.Kconfig
@@ -0,0 +1,12 @@
+# ORE - Objects Raid Engine (libore.ko)
+#
+# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
+# for every ORE user we do it like this. Any user should add itself here
+# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
+# selected here, and we default to "ON". So in effect it is like been
+# selected by any of the users.
+config ORE
+ tristate
+ depends on EXOFS_FS || PNFS_OBJLAYOUT
+ select ASYNC_XOR
+ default SCSI_OSD_ULD
--
1.7.6.4