2009-09-18 22:10:41

by Nicholas A. Bellinger

[permalink] [raw]
Subject: [RFC v2 PATCH 0/19] A kernel-level configfs enabled generic target engine for Linux v2.6.32

Greetings all,

This is the second round of request for comments for TCM/ConfigFS v3.2 from lio-core-2.6.git.
Thanks to the folks who made comments, and I again invite people to take a look and make
recommendations on how the code can be futher improved to use the best available upstream
interfaces.

Also, the standalone patches for TCM v3.2 are now available from:

http://kernel.org/pub/linux/kernel/people/nab/target_core_mod-patches/

The first posting from 09112009 can be found here:

http://marc.info/?l=linux-kernel&m=125272088024636

The changelog since the posting on 09112009, which can be found here:

*) Convert to struct mutex for struct sempahore initialized with init_MUTEX() (mentioned by Daniel Walker)
*) Convert to struct completion for struct semaphore initialized with init_MUTEX_LOCKED() (mentioned by Daniel Walker)
*) Convert to use Kbuild instead of Makefile for drivers/target/ (mentioned by Boaz Harrosh)
*) Use include/asm-generic/div64.h for unsigned long long division on 32-bit architectures
*) Use include/linux/math64.h for unsigned long long modulo on 32-bit architectures

The lio-core-2.6.git tree can be found here:

http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=summary

More Information about Target_Core_Mod/ConfigFS, and PR and ALUA:

http://www.linux-iscsi.org/index.php/Target_Core_Mod/ConfigFS
http://www.linux-iscsi.org/index.php/Persistent_Reservations
http://www.linux-iscsi.org/index.php/ALUA

The complete v3.x TCM CLI operations set can be found here:

http://www.linux-iscsi.org/index.php/Lio-utils#v3.1_TCM_CLI_operations

Instructions and examples for getting setup:

http://www.linux-iscsi.org/builds/docs/LIO-3.0-Users_Reference_Manual.pdf
http://www.linux-iscsi.org/index.php/Howto#Start_target_core_mod

Constructive comments are welcome,

Thank you!

--nab

[RFC PATCH 1/19] Target_Core_Mod Asymmetric Logical Unit Assignment (ALUA) support
[RFC PATCH 2/19] Target_Core_Mod ConfigFS infrastructure
[RFC PATCH 3/19] Target_Core_Mod device core infrastructure
[RFC PATCH 4/19] Target_Core_Mod FILEIO <-> Linux/VFS subsystem
[RFC PATCH 5/19] Target_Core_Mod HBA core infrastructure
[RFC PATCH 6/19] Target_Core_Mod IBLOCK <-> Linux/Block subsystem plugin
[RFC PATCH 7/19] Target_Core_Mod SCSI MIBs
[RFC PATCH 8/19] Target_Core_Mod Subsystem and SE Object plugin infrastructure
[RFC PATCH 9/19] Target_Core_Mod SPC-4 Persistent Reservations
[RFC PATCH 10/19] Target_Core_Mod PSCSI <-> Linux/SCSI subsystem plugin
[RFC PATCH 11/19] Target_Core_Mod RAMDISK_DR and RAMDISK_MCP subsystem plugin
[RFC PATCH 12/19] Target_Core_Mod READ/WRITE command descriptor block generation code
[RFC PATCH 13/19] Target_Core_Mod Storage Engine Object infrastructure
[RFC PATCH 14/19] Target_Core_Mod Task Management infrastructure
[RFC PATCH 15/19] Target_Core_Mod portal group endpoint infrastructure
[RFC PATCH 16/19] Target_Core_Mod Generic Transport Core
[RFC PATCH 17/19] Target_Core_Mod Unit Attention emulation support
[RFC PATCH 18/19] Target_Core_Mod base and fabric_module includes
[RFC PATCH 19/19] Target_Core_Mod Kbuild/Kconfig


2009-09-19 01:15:28

by Daniel Walker

[permalink] [raw]
Subject: Re: [RFC v2 PATCH 0/19] A kernel-level configfs enabled generic target engine for Linux v2.6.32

On Fri, 2009-09-18 at 15:07 -0700, Nicholas A. Bellinger wrote:
> Greetings all,
>
> This is the second round of request for comments for TCM/ConfigFS v3.2
> from lio-core-2.6.git.
> Thanks to the folks who made comments, and I again invite people to
> take a look and make
> recommendations on how the code can be futher improved to use the best
> available upstream
> interfaces.

There are still a couple of minor checkpatch errors in the series, but
it's nothing you would need to resubmit because of ..

In patch 2 the following are fixable,

ERROR: return is not a function, parentheses are not required
#3401: FILE: include/target/configfs_macros.h:104:
+ return((ci) ? container_of(to_config_group(ci), struct _item, \

ERROR: trailing whitespace
#3438: FILE: include/target/configfs_macros.h:141:
+CONFIGFS_EATTR_OPS_STORE(_name, _item);^I$


and in Patch 18, and 19 there are a couple more whitespace related
errors you could fix..

Daniel

2009-09-19 02:07:15

by Nicholas A. Bellinger

[permalink] [raw]
Subject: Re: [RFC v2 PATCH 0/19] A kernel-level configfs enabled generic target engine for Linux v2.6.32

On Fri, 2009-09-18 at 18:15 -0700, Daniel Walker wrote:
> On Fri, 2009-09-18 at 15:07 -0700, Nicholas A. Bellinger wrote:
> > Greetings all,
> >
> > This is the second round of request for comments for TCM/ConfigFS v3.2
> > from lio-core-2.6.git.
> > Thanks to the folks who made comments, and I again invite people to
> > take a look and make
> > recommendations on how the code can be futher improved to use the best
> > available upstream
> > interfaces.
>
> There are still a couple of minor checkpatch errors in the series, but
> it's nothing you would need to resubmit because of ..
>
> In patch 2 the following are fixable,
>
> ERROR: return is not a function, parentheses are not required
> #3401: FILE: include/target/configfs_macros.h:104:
> + return((ci) ? container_of(to_config_group(ci), struct _item, \
>
> ERROR: trailing whitespace
> #3438: FILE: include/target/configfs_macros.h:141:
> +CONFIGFS_EATTR_OPS_STORE(_name, _item);^I$
>
>
> and in Patch 18, and 19 there are a couple more whitespace related
> errors you could fix..
>

Ok, commited these checkpatch fixes:

http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=commitdiff;h=65808529e0ed76308842c87faccf4526fa8bb13d

Also, it looks like configfs_macros.h is triggering the same checkpatch
false-positive as target_core_configfs.c:

configfs_macros.h:138: ERROR: Macros with multiple statements should be enclosed in a do - while loop
configfs_macros.h:143: ERROR: Macros with multiple statements should be enclosed in a do - while loop

This is the case where macros with multiple statements exist containing
function defintions, which obviously cannot be included in a do {} while
loop.

Thanks Daniel,

--nab


> Daniel
>

2009-09-21 12:04:20

by Vladislav Bolkhovitin

[permalink] [raw]
Subject: Re: [RFC v2 PATCH 0/19] A kernel-level configfs enabled generic target engine for Linux v2.6.32

Nicholas A. Bellinger, on 09/19/2009 02:07 AM wrote:
> Greetings all,
>
> This is the second round of request for comments for TCM/ConfigFS v3.2 from lio-core-2.6.git.
> Thanks to the folks who made comments, and I again invite people to take a look and make
> recommendations on how the code can be futher improved to use the best available upstream
> interfaces.
>
> Also, the standalone patches for TCM v3.2 are now available from:
>
> http://kernel.org/pub/linux/kernel/people/nab/target_core_mod-patches/
>
> The first posting from 09112009 can be found here:
>
> http://marc.info/?l=linux-kernel&m=125272088024636
>
> The changelog since the posting on 09112009, which can be found here:
>
> *) Convert to struct mutex for struct sempahore initialized with init_MUTEX() (mentioned by Daniel Walker)
> *) Convert to struct completion for struct semaphore initialized with init_MUTEX_LOCKED() (mentioned by Daniel Walker)
> *) Convert to use Kbuild instead of Makefile for drivers/target/ (mentioned by Boaz Harrosh)
> *) Use include/asm-generic/div64.h for unsigned long long division on 32-bit architectures
> *) Use include/linux/math64.h for unsigned long long modulo on 32-bit architectures
>
> The lio-core-2.6.git tree can be found here:
>
> http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=summary
>
> More Information about Target_Core_Mod/ConfigFS, and PR and ALUA:
>
> http://www.linux-iscsi.org/index.php/Target_Core_Mod/ConfigFS
> http://www.linux-iscsi.org/index.php/Persistent_Reservations
> http://www.linux-iscsi.org/index.php/ALUA
>
> The complete v3.x TCM CLI operations set can be found here:
>
> http://www.linux-iscsi.org/index.php/Lio-utils#v3.1_TCM_CLI_operations
>
> Instructions and examples for getting setup:
>
> http://www.linux-iscsi.org/builds/docs/LIO-3.0-Users_Reference_Manual.pdf
> http://www.linux-iscsi.org/index.php/Howto#Start_target_core_mod

Nicholas,

In the previous iteration of this patchset I asked you some essential
questions about what advantages TCM has over STGT which can't be
implemented in STGT and can justify the move from it to TCM, as well as
how did you test TCM to claim that TCM is generic and, hence, can work
with hardware target adapters (http://lkml.org/lkml/2009/9/15/315).
There was no reply answering those questions, instead you keep pushing
your patches. (In fact, I received privately even 2 very emotional and
offensive replies from Nicholas Bellinger.)

So, since there is no reply, I didn't miss anything and there are no
points to justify the move from STGT to TCM, and TCM is "generic" only
for software iSCSI targets.

For sake of completeness, I should also mention that the move from STGT
to TCM is not a move forward, it's a move backward, because TCM doesn't
allow creation of backend and target drivers in user space.

Hopefully, somebody more authoritative than I will ask you to stop
pushing your patches until you address the above questions.

Vlad

2009-09-21 15:38:57

by Nicholas A. Bellinger

[permalink] [raw]
Subject: Re: [RFC v2 PATCH 0/19] A kernel-level configfs enabled generic target engine for Linux v2.6.32

On Mon, 2009-09-21 at 16:04 +0400, Vladislav Bolkhovitin wrote:
> Nicholas A. Bellinger, on 09/19/2009 02:07 AM wrote:
> > Greetings all,
> >
> > This is the second round of request for comments for TCM/ConfigFS v3.2 from lio-core-2.6.git.
> > Thanks to the folks who made comments, and I again invite people to take a look and make
> > recommendations on how the code can be futher improved to use the best available upstream
> > interfaces.
> >
> > Also, the standalone patches for TCM v3.2 are now available from:
> >
> > http://kernel.org/pub/linux/kernel/people/nab/target_core_mod-patches/
> >
> > The first posting from 09112009 can be found here:
> >
> > http://marc.info/?l=linux-kernel&m=125272088024636
> >
> > The changelog since the posting on 09112009, which can be found here:
> >
> > *) Convert to struct mutex for struct sempahore initialized with init_MUTEX() (mentioned by Daniel Walker)
> > *) Convert to struct completion for struct semaphore initialized with init_MUTEX_LOCKED() (mentioned by Daniel Walker)
> > *) Convert to use Kbuild instead of Makefile for drivers/target/ (mentioned by Boaz Harrosh)
> > *) Use include/asm-generic/div64.h for unsigned long long division on 32-bit architectures
> > *) Use include/linux/math64.h for unsigned long long modulo on 32-bit architectures
> >
> > The lio-core-2.6.git tree can be found here:
> >
> > http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=summary
> >
> > More Information about Target_Core_Mod/ConfigFS, and PR and ALUA:
> >
> > http://www.linux-iscsi.org/index.php/Target_Core_Mod/ConfigFS
> > http://www.linux-iscsi.org/index.php/Persistent_Reservations
> > http://www.linux-iscsi.org/index.php/ALUA
> >
> > The complete v3.x TCM CLI operations set can be found here:
> >
> > http://www.linux-iscsi.org/index.php/Lio-utils#v3.1_TCM_CLI_operations
> >
> > Instructions and examples for getting setup:
> >
> > http://www.linux-iscsi.org/builds/docs/LIO-3.0-Users_Reference_Manual.pdf
> > http://www.linux-iscsi.org/index.php/Howto#Start_target_core_mod
>
> Nicholas,
>
> In the previous iteration of this patchset I asked you some essential
> questions about what advantages TCM has over STGT which can't be
> implemented in STGT and can justify the move from it to TCM, as well as
> how did you test TCM to claim that TCM is generic and, hence, can work
> with hardware target adapters (http://lkml.org/lkml/2009/9/15/315).
> There was no reply answering those questions, instead you keep pushing
> your patches.

I am ignoring you because you ask questions that yourself have already
answered. (why having certain drivers in kernel vs. user target mode
implementations make more sense than others).

I also ignore you because you never seem to be able to cite code
references when you make a claim when you say that TCM is not generic in
nature. So, until you can provide me with source file + line
references, I will continue to dismiss your claims as handwaving.

> (In fact, I received privately even 2 very emotional and
> offensive replies from Nicholas Bellinger.)
>

Yes, I am certainly not going to flame you in public with a long CC
list.

> So, since there is no reply, I didn't miss anything and there are no
> points to justify the move from STGT to TCM, and TCM is "generic" only
> for software iSCSI targets.

Code references in lio-core-2.6.git/drivers/target please..?

>
> For sake of completeness, I should also mention that the move from STGT
> to TCM is not a move forward, it's a move backward, because TCM doesn't
> allow creation of backend and target drivers in user space.
>

Heh, I hardly think that complete support for SPC-4 TCM Persistent
Resevations with APTPL and implict/explict ALUA using ConfigFS is a
setup back.. :P

http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=blob;f=drivers/target/target_core_pr.c
http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=blob;f=drivers/target/target_core_alua.c
http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=blob;f=drivers/target/target_core_configfs.c

Anyways, the plan is to slowly remove upstream STGT as equivilent
functionality is added to TCM. In case you missed it, I do have some
code that uses the existing STGT upstream logic, but is still a WIP and
I have not been including it into the TCM patches for review:

http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=blob;f=drivers/target/target_core_stgt.c

So that means that TCM will be using the kernel <-> user API that STGT
already uses for providing userspace target drivers.

> Hopefully, somebody more authoritative than I will ask you to stop
> pushing your patches until you address the above questions.

I am not sure why you think that k.o members are not allowed to post on
a public list..?

Anyways, just as a told you in private, I am sorry that you decided to
huff and puff earlier this year about the move to configfs as preferred
method of controlling kernel-level target mode infrastructure, and
decided against you and your own communities best interests in doing so.
I have no problem working with the SCST community (or anyone) to move
forward for the benefit of all users, but until you can start bringing
real technical discussion and code review to the table, I have no
interest in working with you directly.

--nab

2009-09-21 18:52:13

by Vladislav Bolkhovitin

[permalink] [raw]
Subject: Re: [RFC v2 PATCH 0/19] A kernel-level configfs enabled generic target engine for Linux v2.6.32

Nicholas A. Bellinger, on 09/21/2009 07:38 PM wrote:
> On Mon, 2009-09-21 at 16:04 +0400, Vladislav Bolkhovitin wrote:
>> Nicholas A. Bellinger, on 09/19/2009 02:07 AM wrote:
>>> Greetings all,
>>>
>>> This is the second round of request for comments for TCM/ConfigFS v3.2 from lio-core-2.6.git.
>>> Thanks to the folks who made comments, and I again invite people to take a look and make
>>> recommendations on how the code can be futher improved to use the best available upstream
>>> interfaces.
>>>
>>> Also, the standalone patches for TCM v3.2 are now available from:
>>>
>>> http://kernel.org/pub/linux/kernel/people/nab/target_core_mod-patches/
>>>
>>> The first posting from 09112009 can be found here:
>>>
>>> http://marc.info/?l=linux-kernel&m=125272088024636
>>>
>>> The changelog since the posting on 09112009, which can be found here:
>>>
>>> *) Convert to struct mutex for struct sempahore initialized with init_MUTEX() (mentioned by Daniel Walker)
>>> *) Convert to struct completion for struct semaphore initialized with init_MUTEX_LOCKED() (mentioned by Daniel Walker)
>>> *) Convert to use Kbuild instead of Makefile for drivers/target/ (mentioned by Boaz Harrosh)
>>> *) Use include/asm-generic/div64.h for unsigned long long division on 32-bit architectures
>>> *) Use include/linux/math64.h for unsigned long long modulo on 32-bit architectures
>>>
>>> The lio-core-2.6.git tree can be found here:
>>>
>>> http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=summary
>>>
>>> More Information about Target_Core_Mod/ConfigFS, and PR and ALUA:
>>>
>>> http://www.linux-iscsi.org/index.php/Target_Core_Mod/ConfigFS
>>> http://www.linux-iscsi.org/index.php/Persistent_Reservations
>>> http://www.linux-iscsi.org/index.php/ALUA
>>>
>>> The complete v3.x TCM CLI operations set can be found here:
>>>
>>> http://www.linux-iscsi.org/index.php/Lio-utils#v3.1_TCM_CLI_operations
>>>
>>> Instructions and examples for getting setup:
>>>
>>> http://www.linux-iscsi.org/builds/docs/LIO-3.0-Users_Reference_Manual.pdf
>>> http://www.linux-iscsi.org/index.php/Howto#Start_target_core_mod
>> Nicholas,
>>
>> In the previous iteration of this patchset I asked you some essential
>> questions about what advantages TCM has over STGT which can't be
>> implemented in STGT and can justify the move from it to TCM, as well as
>> how did you test TCM to claim that TCM is generic and, hence, can work
>> with hardware target adapters (http://lkml.org/lkml/2009/9/15/315).
>> There was no reply answering those questions, instead you keep pushing
>> your patches.
>
> I am ignoring you because you ask questions that yourself have already
> answered. (why having certain drivers in kernel vs. user target mode
> implementations make more sense than others).

Basically, none of those my arguments can be applicable to TCM in its
current state and all TCM "advantages" like PRs can be well implemented
in STGT, so I wonder, why do you bother people with requests for
"*inclusion* of Target_Core_Mod/ConfigFS v3.2 from lio-core-2.6.git code
*into mainline v2.6.32*" for such a raw code?

Vlad