Re: [PATCH] scsi: iscsi: Switch to using the new API kobj_to_dev()
On Mon, 2021-03-08 at 11:34 +0800, Jiapeng Chong wrote: > Fix the following coccicheck warnings: > > ./drivers/scsi/scsi_transport_iscsi.c:930:60-61: WARNING opportunity > for kobj_to_dev(). I have to ask, what is the point of this? container_of is usually pretty safe ... as in it will detect when you screw up the usage. The only real misuse you can get is when the input type has an object of the same name and return type and you got confused between two objects with this property, but misuses like this resulting in bugs are very, very rare. Usually we wrap container_of because the wrapping is a bit shorter as you can see: kobj_to_dev is about half the size of the container_of form ... but is there any other reason to do it? The problem is that container_of is a standard way of doing cast outs in the kernel and we have hundreds of them. To be precise, in scsi alone: jejb@jarvis:~/git/linux/drivers/scsi> git grep container_of|wc -l 496 So we really don't want to encourage wrapping them all because the churn would be unbelievable and the gain minute. So why should this one case especially be wrapped when we don't want to wrap the others? James -- You received this message because you are subscribed to the Google Groups "open-iscsi" group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/open-iscsi/2b90f003bbf8064c2372cba6a61b31cb8dec7a69.camel%40linux.ibm.com.
Re: [PATCH] Check sk before sendpage
On Wed, 2019-07-10 at 17:47 +, Lee Duncan wrote: > On 7/10/19 12:30 AM, Yang Bin wrote: > > > From: " Yang Bin " > > > > Before xmit,iscsi may disconnect just now. > > So must check connection sock NULL or not,or kernel will crash for > > accessing NULL pointer. > > > > Signed-off-by: Yang Bin > > --- > > drivers/scsi/iscsi_tcp.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c > > index 7bedbe8..a59c49f 100644 > > --- a/drivers/scsi/iscsi_tcp.c > > +++ b/drivers/scsi/iscsi_tcp.c > > @@ -264,6 +264,9 @@ static int iscsi_sw_tcp_xmit_segment(struct > > iscsi_tcp_conn *tcp_conn, > > unsigned int copied = 0; > > int r = 0; > > > > + if (!sk) > > + return -ENOTCONN; > > + > > while (!iscsi_tcp_segment_done(tcp_conn, segment, 0, r)) { > > struct scatterlist *sg; > > unsigned int offset, copy; > > > > If the socket can be closed right before iscsi_sw_tcp_xmit_segment() > is called, can it be called in the middle of sending segments? (In > which case the check would have to be in the while loop.) I think the important point is: is this an actual observed bug or just a theoretical problem? The reason for asking is this call is controlled directly by the ISCSI_UEVENT_DESTROY_CONN event sent by the iscsi daemon. Obviously if the daemon goes haywire and doesn't shut down the connection before sending the destroy event, we may get the crash, but I would be inclined to say fix the daemon. James
Re: network namespace, netlink and sysfs changes for iSCSI (Re: [PATCH 0/9] use network namespace for iSCSI control interfaces)
On Tue, 2017-11-07 at 10:01 -0800, Chris Leech wrote: > Hello, > > I have this set of changes to the iSCSI control interfaces pending > review, but seeing as it's sysfs and netlink changes there's not a > lot of feedback from linux-scsi. Well, it's a bit unlikely that they understand network namespaces. > I was hoping I could get a brief review on the adding of network > namespace support here. Most network namespace work is done on net...@vger.kernel.org, but they probably won't understand all the SCSI bits, but perhaps they don't need to; it's basically the netlink and the filters, right? The other list that would take a more generic view is the containers one contain...@lists.linux-foundation.org because that's where most namespace stuff ends up. James > Thank you, > Chris > > On Tue, Oct 31, 2017 at 03:40:55PM -0700, Chris Leech wrote: > > > > This series of changes makes the iSCSI netlink and sysfs control > > interfaces filtered by network namespace. This is required to run > > iscsid in any network namespace other than the initial default one. > > > > Currently the netlink communication will fail if iscsid is started > > in a non-default network namespace, as there is no kernel side > > socket. After fixing that, the rest of these changes are to filter > > visibility of the iSCSI transport objects by netns. This allows > > for multiple iscsid instances to be run, one per netns, each > > controlling it's own set of iSCSI sessions. > > > > The iSCSI transport objects are filtered, but not the SCSI or block > > layer devices. So while iSCSI hosts and sessions become limited to > > a network namespace, any attached devices remain visible system > > wide. > > > > This currently only supports iscsi_tcp running in a new namespace, > > as it creates a virtual host per session. Support could be added > > later to allow assignment of iSCSI HBAs to network namespace, much > > as is done for network interfaces. > > > > Chris Leech (9): > > iscsi: create per-net iscsi netlink kernel sockets > > iscsi: associate endpoints with a host > > iscsi: sysfs filtering by network namespace > > iscsi: make all iSCSI netlink multicast namespace aware > > iscsi: set netns for iscsi_tcp hosts > > iscsi: check net namespace for all iscsi lookups > > iscsi: convert flashnode devices from bus to class > > iscsi: rename iscsi_bus_flash_* to iscsi_flash_* > > iscsi: filter flashnode sysfs by net namespace > > > > drivers/infiniband/ulp/iser/iscsi_iser.c | 7 +- > > drivers/scsi/be2iscsi/be_iscsi.c | 6 +- > > drivers/scsi/bnx2i/bnx2i_iscsi.c | 6 +- > > drivers/scsi/cxgbi/libcxgbi.c| 6 +- > > drivers/scsi/iscsi_tcp.c | 7 + > > drivers/scsi/qedi/qedi_iscsi.c | 6 +- > > drivers/scsi/qla4xxx/ql4_os.c| 62 +-- > > drivers/scsi/scsi_transport_iscsi.c | 625 > > ++- > > include/scsi/scsi_transport_iscsi.h | 63 ++-- > > 9 files changed, 538 insertions(+), 250 deletions(-) > > > > -- > > 2.9.5 > > > -- You received this message because you are subscribed to the Google Groups "open-iscsi" group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To post to this group, send email to open-iscsi@googlegroups.com. Visit this group at https://groups.google.com/group/open-iscsi. For more options, visit https://groups.google.com/d/optout.
Re: [PATCH] Use ida_simple for SCSI iSCSI transport session id
On Fri, 2016-02-12 at 09:38 -0800, Lee Duncan wrote: > The scsi_transport_iscsi module already uses the ida_simple > routines for managing the target ID, if requested to do > so. This change replaces an ever-increasing atomic integer > that tracks the session ID itself with the ida_simple > family of routines. This means that the session ID > will be reclaimed and can be reused when the session > is freed. Is reusing session ID's really a good idea? For sequential sessions it means that the ID of the next session will be re-used, i.e. the same as the previous sessions, which could lead to target confusion. I think local uniqueness of session IDs is more important than wrap around because sessions are short lived entities and the chances of the same session being alive by the time we've wrapped is pretty tiny. If you can demostrate a multi-target problem, perhaps we should rather fix this by making the next session id a target local quantity? James -- You received this message because you are subscribed to the Google Groups "open-iscsi" group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To post to this group, send email to open-iscsi@googlegroups.com. Visit this group at https://groups.google.com/group/open-iscsi. For more options, visit https://groups.google.com/d/optout.
Re: DEFINE_IDA causing memory leaks? (was Re: [PATCH 1/2] virtio: fix memory leak of virtio ida cache layers)
On Thu, 2015-09-17 at 08:33 +0300, Michael S. Tsirkin wrote: > On Wed, Sep 16, 2015 at 07:29:17PM -0500, Suman Anna wrote: > > The virtio core uses a static ida named virtio_index_ida for > > assigning index numbers to virtio devices during registration. > > The ida core may allocate some internal idr cache layers and > > an ida bitmap upon any ida allocation, and all these layers are > > truely freed only upon the ida destruction. The virtio_index_ida > > is not destroyed at present, leading to a memory leak when using > > the virtio core as a module and atleast one virtio device is > > registered and unregistered. > > > > Fix this by invoking ida_destroy() in the virtio core module > > exit. > > > > Cc: "Michael S. Tsirkin"> > Signed-off-by: Suman Anna > > Interesting. > Will the same apply to e.g. sd_index_ida in drivers/scsi/sd.c > or iscsi_sess_ida in drivers/scsi/scsi_transport_iscsi.c? > > If no, why not? > > One doesn't generally expect to have to free global variables. > Maybe we should forbid DEFINE_IDA in modules? > > James, could you comment on this please? ida is Tejun's baby (cc'd). However, it does look like without ida_destroy() you will leave a cached ida->bitmap dangling because we're trying to be a bit clever in ida_remove() so we cache the bitmap to relieve ida_pre_get() of the burden if we would otherwise free it. I don't understand why you'd want to forbid DEFINE_IDA ... all it does is pre-initialise a usually static ida structure. The initialised structure will have a NULL bitmap cache that's allocated in the first ida_pre_get() ... that all seems to work as expected and no different from a dynamically allocated struct ida. Or are you thinking because ida_destory() doesn't set bitmap to NULL, it damages the reuse? In which case I'm not sure there's much benefit to making it reusable, but I suppose we could by adding a memset into ida_destroy(). James > > --- > > drivers/virtio/virtio.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c > > index b1877d73fa56..7062bb0975a5 100644 > > --- a/drivers/virtio/virtio.c > > +++ b/drivers/virtio/virtio.c > > @@ -412,6 +412,7 @@ static int virtio_init(void) > > static void __exit virtio_exit(void) > > { > > bus_unregister(_bus); > > + ida_destroy(_index_ida); > > } > > core_initcall(virtio_init); > > module_exit(virtio_exit); > > -- > > 2.5.0 > -- > To unsubscribe from this list: send the line "unsubscribe linux-scsi" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- You received this message because you are subscribed to the Google Groups "open-iscsi" group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To post to this group, send email to open-iscsi@googlegroups.com. Visit this group at http://groups.google.com/group/open-iscsi. For more options, visit https://groups.google.com/d/optout.
Re: DEFINE_IDA causing memory leaks? (was Re: [PATCH 1/2] virtio: fix memory leak of virtio ida cache layers)
On Thu, 2015-09-17 at 19:06 +0300, Michael S. Tsirkin wrote: > On Thu, Sep 17, 2015 at 07:15:44AM -0700, James Bottomley wrote: > > On Thu, 2015-09-17 at 08:33 +0300, Michael S. Tsirkin wrote: > > > On Wed, Sep 16, 2015 at 07:29:17PM -0500, Suman Anna wrote: > > > > The virtio core uses a static ida named virtio_index_ida for > > > > assigning index numbers to virtio devices during registration. > > > > The ida core may allocate some internal idr cache layers and > > > > an ida bitmap upon any ida allocation, and all these layers are > > > > truely freed only upon the ida destruction. The virtio_index_ida > > > > is not destroyed at present, leading to a memory leak when using > > > > the virtio core as a module and atleast one virtio device is > > > > registered and unregistered. > > > > > > > > Fix this by invoking ida_destroy() in the virtio core module > > > > exit. > > > > > > > > Cc: "Michael S. Tsirkin" <m...@redhat.com> > > > > Signed-off-by: Suman Anna <s-a...@ti.com> > > > > > > Interesting. > > > Will the same apply to e.g. sd_index_ida in drivers/scsi/sd.c > > > or iscsi_sess_ida in drivers/scsi/scsi_transport_iscsi.c? > > > > > > If no, why not? > > > > > > One doesn't generally expect to have to free global variables. > > > Maybe we should forbid DEFINE_IDA in modules? > > > > > > James, could you comment on this please? > > > > ida is Tejun's baby (cc'd). However, it does look like without > > ida_destroy() you will leave a cached ida->bitmap dangling because we're > > trying to be a bit clever in ida_remove() so we cache the bitmap to > > relieve ida_pre_get() of the burden if we would otherwise free it. > > > > I don't understand why you'd want to forbid DEFINE_IDA ... all it does > > is pre-initialise a usually static ida structure. The initialised > > structure will have a NULL bitmap cache that's allocated in the first > > ida_pre_get() ... that all seems to work as expected and no different > > from a dynamically allocated struct ida. Or are you thinking because > > ida_destory() doesn't set bitmap to NULL, it damages the reuse? In > > which case I'm not sure there's much benefit to making it reusable, but > > I suppose we could by adding a memset into ida_destroy(). > > > > James > > It's just unusual to have a descructor without a constructor. > I bet more drivers misuse this AI because of this. Well, there's an easy fix for that. We could have ida_remove() actually free the bitmap and not cache it if it's the last layer. That way ida would naturally empty and we wouldn't need a destructor. Tejun, would that work? James > > > > --- > > > > drivers/virtio/virtio.c | 1 + > > > > 1 file changed, 1 insertion(+) > > > > > > > > diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c > > > > index b1877d73fa56..7062bb0975a5 100644 > > > > --- a/drivers/virtio/virtio.c > > > > +++ b/drivers/virtio/virtio.c > > > > @@ -412,6 +412,7 @@ static int virtio_init(void) > > > > static void __exit virtio_exit(void) > > > > { > > > > bus_unregister(_bus); > > > > + ida_destroy(_index_ida); > > > > } > > > > core_initcall(virtio_init); > > > > module_exit(virtio_exit); > > > > -- > > > > 2.5.0 > > > -- > > > To unsubscribe from this list: send the line "unsubscribe linux-scsi" in > > > the body of a message to majord...@vger.kernel.org > > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > > > > > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-scsi" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- You received this message because you are subscribed to the Google Groups "open-iscsi" group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To post to this group, send email to open-iscsi@googlegroups.com. Visit this group at http://groups.google.com/group/open-iscsi. For more options, visit https://groups.google.com/d/optout.
Re: DEFINE_IDA causing memory leaks? (was Re: [PATCH 1/2] virtio: fix memory leak of virtio ida cache layers)
On Thu, 2015-09-17 at 13:15 -0400, Tejun Heo wrote: > Hello, > > On Thu, Sep 17, 2015 at 09:48:37AM -0700, James Bottomley wrote: > > Well, there's an easy fix for that. We could have ida_remove() actually > > free the bitmap and not cache it if it's the last layer. That way ida > > would naturally empty and we wouldn't need a destructor. Tejun, would > > that work? > > Yeah, that definitely is one way to go about it. It kinda muddles the > purpose of ida_destroy() tho. I suppose we can rename it to > idr_remove_all() and then do the same to idr. I'm not particularly > objecting to all that but what's wrong with just calling idr_destroy() > on exit paths? If missing the call in modules is an issue, maybe we > can just annotate idr/ida with debugobj? The argument is that we shouldn't have to explicitly destroy a statically initialized object, so DEFINE_IDA(someida); Should just work without having to explicitly do ida_destory(someida); somewhere in the exit code. It's about usage patterns. Michael's argument is that if we can't follow the no destructor pattern for DEFINE_IDA() then we shouldn't have it at all, because it's confusing kernel design patterns. The pattern we would have would be struct ida someida: ida_init(); ... ida_destroy(); so the object explicitly has a constructor matched to a destructor. James -- You received this message because you are subscribed to the Google Groups "open-iscsi" group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To post to this group, send email to open-iscsi@googlegroups.com. Visit this group at http://groups.google.com/group/open-iscsi. For more options, visit https://groups.google.com/d/optout.
Re: [Lsf-pc] [LSF/MM TOPIC] iSCSI MQ adoption via MCS discussion
On Fri, 2015-01-09 at 19:28 +0100, Hannes Reinecke wrote: [...] I think you are assuming we are leaving the iscsi code as it is today. For the non-MCS mq session per CPU design, we would be allocating and binding the session and its resources to specific CPUs. They would only be accessed by the threads on that one CPU, so we get our serialization/synchronization from that. That is why we are saying we do not need something like atomic_t/spin_locks for the sequence number handling for this type of implementation. Wouldn't that need to be coordinated with the networking layer? Doesn't it do the same thing, matching TX/RX queues to CPUs? If so, wouldn't we decrease bandwidth by restricting things to one CPU? So this is actually one of the fascinating questions on multi-queue. Long ago, when I worked for the NCR OS group and we were bringing up the first SMP systems, we actually found that the SCSI stack went faster when bound to a single CPU. The problem in those days was lock granularity and contention, so single CPU binding eliminated that overhead. However, nowadays with modern multi-tiered caching and huge latencies for cache line bouncing, we're approaching the point where the fineness of our lock granularity is hurting performance, so it's worth re-asking the question of whether just dumping all the lock latency by single CPU binding is a worthwhile exercise. James -- You received this message because you are subscribed to the Google Groups open-iscsi group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To post to this group, send email to open-iscsi@googlegroups.com. Visit this group at http://groups.google.com/group/open-iscsi. For more options, visit https://groups.google.com/d/optout.
Re: [Lsf-pc] [LSF/MM TOPIC] iSCSI MQ adoption via MCS discussion
On Thu, 2015-01-08 at 14:57 -0800, Nicholas A. Bellinger wrote: On Thu, 2015-01-08 at 14:29 -0800, James Bottomley wrote: On Thu, 2015-01-08 at 14:16 -0800, Nicholas A. Bellinger wrote: On Thu, 2015-01-08 at 08:50 +0100, Bart Van Assche wrote: On 01/07/15 22:39, Mike Christie wrote: On 01/07/2015 10:57 AM, Hannes Reinecke wrote: On 01/07/2015 05:25 PM, Sagi Grimberg wrote: Hi everyone, Now that scsi-mq is fully included, we need an iSCSI initiator that would use it to achieve scalable performance. The need is even greater for iSCSI offload devices and transports that support multiple HW queues. As iSER maintainer I'd like to discuss the way we would choose to implement that in iSCSI. My measurements show that iSER initiator can scale up to ~2.1M IOPs with multiple sessions but only ~630K IOPs with a single session where the most significant bottleneck the (single) core processing completions. In the existing single connection per session model, given that command ordering must be preserved session-wide, we end up in a serial command execution over a single connection which is basically a single queue model. The best fit seems to be plugging iSCSI MCS as a multi-queued scsi LLDD. In this model, a hardware context will have a 1x1 mapping with an iSCSI connection (TCP socket or a HW queue). iSCSI MCS and it's role in the presence of dm-multipath layer was discussed several times in the past decade(s). The basic need for MCS is implementing a multi-queue data path, so perhaps we may want to avoid doing any type link aggregation or load balancing to not overlap dm-multipath. For example we can implement ERL=0 (which is basically the scsi-mq ERL) and/or restrict a session to a single portal. As I see it, the todo's are: 1. Getting MCS to work (kernel + user-space) with ERL=0 and a round-robin connection selection (per scsi command execution). 2. Plug into scsi-mq - exposing num_connections as nr_hw_queues and using blk-mq based queue (conn) selection. 3. Rework iSCSI core locking scheme to avoid session-wide locking as much as possible. 4. Use blk-mq pre-allocation and tagging facilities. I've recently started looking into this. I would like the community to agree (or debate) on this scheme and also talk about implementation with anyone who is also interested in this. Yes, that's a really good topic. I've pondered implementing MC/S for iscsi/TCP but then I've figured my network implementation knowledge doesn't spread that far. So yeah, a discussion here would be good. Mike? Any comments? I have been working under the assumption that people would be ok with MCS upstream if we are only using it to handle the issue where we want to do something like have a tcp/iscsi connection per CPU then map the connection to a blk_mq_hw_ctx. In this more limited MCS implementation there would be no iscsi layer code to do something like load balance across ports or transport paths like how dm-multipath does, so there would be no feature/code duplication. For balancing across hctxs, then the iscsi layer would also leave that up to whatever we end up with in upper layers, so again no feature/code duplication with upper layers. So pretty non controversial I hope :) If people want to add something like round robin connection selection in the iscsi layer, then I think we want to leave that for after the initial merge, so people can argue about that separately. Hello Sagi and Mike, I agree with Sagi that adding scsi-mq support in the iSER initiator would help iSER users because that would allow these users to configure a single iSER target and use the multiqueue feature instead of having to configure multiple iSER targets to spread the workload over multiple cpus at the target side. And I agree with Mike that implementing scsi-mq support in the iSER initiator as multiple independent connections probably is a better choice than MC/S. RFC 3720 namely requires that iSCSI numbering is session-wide. This means maintaining a single counter for all MC/S sessions. Such a counter would be a contention point. I'm afraid that because of that counter performance on a multi-socket initiator system with a scsi-mq implementation based on MC/S could be worse than with the approach with multiple iSER targets. Hence my preference for an approach based on multiple independent iSER connections instead of MC/S. The idea that a simple session wide counter for command sequence number assignment adds such a degree of contention
Re: [Lsf-pc] [LSF/MM TOPIC] iSCSI MQ adoption via MCS discussion
On Thu, 2015-01-08 at 21:03 -0800, Nicholas A. Bellinger wrote: On Thu, 2015-01-08 at 15:22 -0800, James Bottomley wrote: On Thu, 2015-01-08 at 14:57 -0800, Nicholas A. Bellinger wrote: On Thu, 2015-01-08 at 14:29 -0800, James Bottomley wrote: On Thu, 2015-01-08 at 14:16 -0800, Nicholas A. Bellinger wrote: SNIP The point is that a simple session wide counter for command sequence number assignment is significantly less overhead than all of the overhead associated with running a full multipath stack atop multiple sessions. I don't see how that's relevant to issue speed, which was the measure we were using: The layers above are just a hopper. As long as they're loaded, the MQ lower layer can issue at full speed. So as long as the multipath hopper is efficient enough to keep the queues loaded there's no speed degradation. The problem with a sequence point inside the MQ issue layer is that it can cause a stall that reduces the issue speed. so the counter sequence point causes a degraded issue speed over the multipath hopper approach above even if the multipath approach has a higher CPU overhead. Now, if the system is close to 100% cpu already, *then* the multipath overhead will try to take CPU power we don't have and cause a stall, but it's only in the flat out CPU case. Not to mention that our iSCSI/iSER initiator is already taking a session wide lock when sending outgoing PDUs, so adding a session wide counter isn't adding any additional synchronization overhead vs. what's already in place. I'll leave it up to the iSER people to decide whether they're redoing this as part of the MQ work. Session wide command sequence number synchronization isn't something to be removed as part of the MQ work. It's a iSCSI/iSER protocol requirement. The sequence number is a requirement of the session. Multiple separate sessions means no SN correlation between the different connections, so no global requirement for a SN counter across the queues ... that's what Mike was saying about implementing multipath not using MCS. With MCS we have a single session for all the queues and thus have to correlate the sequence number across all the connections and hence all the queues; without it we don't. That's why the sequence number becomes a potential stall point in MQ implementation of MCS which can be obviated if we use a separate session per queue. James -- You received this message because you are subscribed to the Google Groups open-iscsi group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To post to this group, send email to open-iscsi@googlegroups.com. Visit this group at http://groups.google.com/group/open-iscsi. For more options, visit https://groups.google.com/d/optout.
Re: [LSF/MM TOPIC] iSCSI MQ adoption via MCS discussion
On Thu, 2015-01-08 at 14:16 -0800, Nicholas A. Bellinger wrote: On Thu, 2015-01-08 at 08:50 +0100, Bart Van Assche wrote: On 01/07/15 22:39, Mike Christie wrote: On 01/07/2015 10:57 AM, Hannes Reinecke wrote: On 01/07/2015 05:25 PM, Sagi Grimberg wrote: Hi everyone, Now that scsi-mq is fully included, we need an iSCSI initiator that would use it to achieve scalable performance. The need is even greater for iSCSI offload devices and transports that support multiple HW queues. As iSER maintainer I'd like to discuss the way we would choose to implement that in iSCSI. My measurements show that iSER initiator can scale up to ~2.1M IOPs with multiple sessions but only ~630K IOPs with a single session where the most significant bottleneck the (single) core processing completions. In the existing single connection per session model, given that command ordering must be preserved session-wide, we end up in a serial command execution over a single connection which is basically a single queue model. The best fit seems to be plugging iSCSI MCS as a multi-queued scsi LLDD. In this model, a hardware context will have a 1x1 mapping with an iSCSI connection (TCP socket or a HW queue). iSCSI MCS and it's role in the presence of dm-multipath layer was discussed several times in the past decade(s). The basic need for MCS is implementing a multi-queue data path, so perhaps we may want to avoid doing any type link aggregation or load balancing to not overlap dm-multipath. For example we can implement ERL=0 (which is basically the scsi-mq ERL) and/or restrict a session to a single portal. As I see it, the todo's are: 1. Getting MCS to work (kernel + user-space) with ERL=0 and a round-robin connection selection (per scsi command execution). 2. Plug into scsi-mq - exposing num_connections as nr_hw_queues and using blk-mq based queue (conn) selection. 3. Rework iSCSI core locking scheme to avoid session-wide locking as much as possible. 4. Use blk-mq pre-allocation and tagging facilities. I've recently started looking into this. I would like the community to agree (or debate) on this scheme and also talk about implementation with anyone who is also interested in this. Yes, that's a really good topic. I've pondered implementing MC/S for iscsi/TCP but then I've figured my network implementation knowledge doesn't spread that far. So yeah, a discussion here would be good. Mike? Any comments? I have been working under the assumption that people would be ok with MCS upstream if we are only using it to handle the issue where we want to do something like have a tcp/iscsi connection per CPU then map the connection to a blk_mq_hw_ctx. In this more limited MCS implementation there would be no iscsi layer code to do something like load balance across ports or transport paths like how dm-multipath does, so there would be no feature/code duplication. For balancing across hctxs, then the iscsi layer would also leave that up to whatever we end up with in upper layers, so again no feature/code duplication with upper layers. So pretty non controversial I hope :) If people want to add something like round robin connection selection in the iscsi layer, then I think we want to leave that for after the initial merge, so people can argue about that separately. Hello Sagi and Mike, I agree with Sagi that adding scsi-mq support in the iSER initiator would help iSER users because that would allow these users to configure a single iSER target and use the multiqueue feature instead of having to configure multiple iSER targets to spread the workload over multiple cpus at the target side. And I agree with Mike that implementing scsi-mq support in the iSER initiator as multiple independent connections probably is a better choice than MC/S. RFC 3720 namely requires that iSCSI numbering is session-wide. This means maintaining a single counter for all MC/S sessions. Such a counter would be a contention point. I'm afraid that because of that counter performance on a multi-socket initiator system with a scsi-mq implementation based on MC/S could be worse than with the approach with multiple iSER targets. Hence my preference for an approach based on multiple independent iSER connections instead of MC/S. The idea that a simple session wide counter for command sequence number assignment adds such a degree of contention that it renders MC/S at a performance disadvantage vs. multi-session configurations with all of the extra multipath logic overhead on top is at best, a naive proposition. On the initiator side for MC/S, literally the only thing that needs to be serialized is the assignment of the command sequence number to individual non-immediate PDUs. The sending of the outgoing PDUs + immediate
Re: [LSF/MM TOPIC] iSCSI MQ adoption via MCS discussion
On Wed, 2015-01-07 at 15:39 -0600, Mike Christie wrote: On 01/07/2015 10:57 AM, Hannes Reinecke wrote: On 01/07/2015 05:25 PM, Sagi Grimberg wrote: Hi everyone, Now that scsi-mq is fully included, we need an iSCSI initiator that would use it to achieve scalable performance. The need is even greater for iSCSI offload devices and transports that support multiple HW queues. As iSER maintainer I'd like to discuss the way we would choose to implement that in iSCSI. My measurements show that iSER initiator can scale up to ~2.1M IOPs with multiple sessions but only ~630K IOPs with a single session where the most significant bottleneck the (single) core processing completions. In the existing single connection per session model, given that command ordering must be preserved session-wide, we end up in a serial command execution over a single connection which is basically a single queue model. The best fit seems to be plugging iSCSI MCS as a multi-queued scsi LLDD. In this model, a hardware context will have a 1x1 mapping with an iSCSI connection (TCP socket or a HW queue). iSCSI MCS and it's role in the presence of dm-multipath layer was discussed several times in the past decade(s). The basic need for MCS is implementing a multi-queue data path, so perhaps we may want to avoid doing any type link aggregation or load balancing to not overlap dm-multipath. For example we can implement ERL=0 (which is basically the scsi-mq ERL) and/or restrict a session to a single portal. As I see it, the todo's are: 1. Getting MCS to work (kernel + user-space) with ERL=0 and a round-robin connection selection (per scsi command execution). 2. Plug into scsi-mq - exposing num_connections as nr_hw_queues and using blk-mq based queue (conn) selection. 3. Rework iSCSI core locking scheme to avoid session-wide locking as much as possible. 4. Use blk-mq pre-allocation and tagging facilities. I've recently started looking into this. I would like the community to agree (or debate) on this scheme and also talk about implementation with anyone who is also interested in this. Yes, that's a really good topic. I've pondered implementing MC/S for iscsi/TCP but then I've figured my network implementation knowledge doesn't spread that far. So yeah, a discussion here would be good. Mike? Any comments? I have been working under the assumption that people would be ok with MCS upstream if we are only using it to handle the issue where we want to do something like have a tcp/iscsi connection per CPU then map the connection to a blk_mq_hw_ctx. In this more limited MCS implementation there would be no iscsi layer code to do something like load balance across ports or transport paths like how dm-multipath does, so there would be no feature/code duplication. For balancing across hctxs, then the iscsi layer would also leave that up to whatever we end up with in upper layers, so again no feature/code duplication with upper layers. So pretty non controversial I hope :) If you can make that work, so we expose MCS in a way that allows upper layers to use it, I'd say it was pretty much perfect. The main objection I've had over the years to multiple connections per session is that it required a duplication of the multi-path code within the iscsi initiator (and that was after several long fights to get multi path out of other fabric initiators), so something that doesn't require the duplication overcomes that objection. If people want to add something like round robin connection selection in the iscsi layer, then I think we want to leave that for after the initial merge, so people can argue about that separately. Well, you're right, we can argue about it later, but if it's just round robin, why would it be better done in the initator rather than dm? James -- You received this message because you are subscribed to the Google Groups open-iscsi group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To post to this group, send email to open-iscsi@googlegroups.com. Visit this group at http://groups.google.com/group/open-iscsi. For more options, visit https://groups.google.com/d/optout.
Re: [PATCH 33/38] scsi: transport: add missing put_device call
On Thu, 2013-12-19 at 16:06 +0100, Levente Kurusa wrote: This is required so that we give up the last reference to the device. This isn't true. Remove the kfree() as well, because the put_device() will result in iscsi_endpoint_release being called and hence it will be kfree'd. There's no real point to this patch. The use case where we own the device absolutely up until the point we hand out references is well established and there are a number of destroy paths running through SCSI code which don't go via refcounting and this is one of them. They're almost universally on error legs on device bring up as this one is. James -- You received this message because you are subscribed to the Google Groups open-iscsi group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To post to this group, send email to open-iscsi@googlegroups.com. Visit this group at http://groups.google.com/group/open-iscsi. For more options, visit https://groups.google.com/groups/opt_out.
Re: [PATCH] SCSI: amd_iommu dma_boundary overflow
This is a bit tricky, since AMD laid off the team who were maintaining this, but I added to the cc' one of the original maintainers in the hopes they can take a look. James On Tue, 2013-02-19 at 18:30 -0800, Eddie Wai wrote: Hello, For a 64-bit DMA capable PCIe storage HBA running under the 64-bit AMD-VI IOMMU environment, the amd_iommu code was observed to hit an overflow when it tries to page align the dma_parms-segment_boundary_mask. This overflow would eventually trigger the BUG_ON in the iommu-helper's iommu_is_span_boundary is_power_of_2 check. A little back tracking shows that since the device is 64-bit DMA capable, the pcidev-dma_mask was correctly set to DMA_BIT_MASK(64). This dma_mask was then transferred to the SCSI host's dma_boundary param (by the iSCSI driver) and was eventually used to populate the q-limits.seg_boundary_mask (via blk_queue_segment_boundary) and the dma_parms-segment_boundary_mask (via dma_set_seg_boundary) during the scsi queue allocation. The code seems correct as it make sense to impose the same hardware segment boundary limit on both the blk queue and the DMA code. It would be an easy alternative to simply prevent the shost-dma_boundary from being set to DMA_BIT_MASK(64), but it seems more correct to fix the amd_iommu code itself to detect and handle this max 64-bit mask condition. Please let me know your comments. Thanks, Eddie Signed-off-by: Eddie Wai eddie@broadcom.com --- drivers/iommu/amd_iommu.c |7 +-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index d90a421..63185a1 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -1526,11 +1526,14 @@ static unsigned long dma_ops_area_alloc(struct device *dev, unsigned long boundary_size; unsigned long address = -1; unsigned long limit; + unsigned long mask; next_bit = PAGE_SHIFT; - boundary_size = ALIGN(dma_get_seg_boundary(dev) + 1, - PAGE_SIZE) PAGE_SHIFT; + mask = dma_get_seg_boundary(dev); + boundary_size = mask + 1 ? + ALIGN(mask + 1, PAGE_SIZE) PAGE_SHIFT : + 1UL (BITS_PER_LONG - PAGE_SHIFT); for (;i max_index; ++i) { unsigned long offset = dom-aperture[i]-offset PAGE_SHIFT; -- You received this message because you are subscribed to the Google Groups open-iscsi group. To unsubscribe from this group and stop receiving emails from it, send an email to open-iscsi+unsubscr...@googlegroups.com. To post to this group, send email to open-iscsi@googlegroups.com. Visit this group at http://groups.google.com/group/open-iscsi?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
Re: [PATCH 3/4 v2] BNX2I: Changed the nopout_wqe-lun memcpy to use sizeof instead
On Fri, 2011-06-24 at 15:20 -0500, Mike Christie wrote: On 06/23/2011 05:51 PM, Eddie Wai wrote: Modified the memcpy of nopout_wqe-lun to use sizeof(struct scsi_lun) instead of the hardcoded value 8 as noted by review comments. Signed-off-by: Eddie Wai eddie@broadcom.com --- drivers/scsi/bnx2i/bnx2i_hwi.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/scsi/bnx2i/bnx2i_hwi.c b/drivers/scsi/bnx2i/bnx2i_hwi.c index 2a1bb9f..ba2f96e 100644 --- a/drivers/scsi/bnx2i/bnx2i_hwi.c +++ b/drivers/scsi/bnx2i/bnx2i_hwi.c @@ -551,7 +551,7 @@ int bnx2i_send_iscsi_nopout(struct bnx2i_conn *bnx2i_conn, nopout_wqe-op_code = nopout_hdr-opcode; nopout_wqe-op_attr = ISCSI_FLAG_CMD_FINAL; - memcpy(nopout_wqe-lun, nopout_hdr-lun, 8); + memcpy(nopout_wqe-lun, nopout_hdr-lun, sizeof(struct scsi_lun)); if (test_bit(BNX2I_NX2_DEV_57710, ep-hba-cnic_dev_type)) { u32 tmp = nopout_wqe-lun[0]; This patch and Andy your patch [PATCH] iscsi: Use struct scsi_lun in iscsi structs instead of u8[8] are going to conflict with each other. And Eddie, I think you missed some other instances where 8 is hardcoded. Agreed, I skipped this one for now ... please resubmit against scsi-misc if more work is needed. Thanks, James -- You received this message because you are subscribed to the Google Groups open-iscsi group. To post to this group, send email to open-iscsi@googlegroups.com. To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/open-iscsi?hl=en.
Re: [Security] [PATCH 00/20] world-writable files in sysfs and debugfs
On Mon, 2011-03-14 at 20:09 -0700, Greg KH wrote: On Mon, Mar 14, 2011 at 10:26:05PM -0400, James Bottomley wrote: On Sat, 2011-03-12 at 23:23 +0300, Vasiliy Kulikov wrote: Vasiliy Kulikov (20): mach-ux500: mbox-db5500: world-writable sysfs fifo file leds: lp5521: world-writable sysfs engine* files leds: lp5523: world-writable engine* sysfs files misc: ep93xx_pwm: world-writable sysfs files rtc: rtc-ds1511: world-writable sysfs nvram file scsi: aic94xx: world-writable sysfs update_bios file scsi: iscsi: world-writable sysfs priv_sess file These are still not merged :( OK, so I've not been tracking where we are in the dizzying ride on security systems. However, I thought we landed up in the privilege separation arena using capabilities. That means that world writeable files aren't necessarily a problem as long as the correct capabilities checks are in place, right? There are no capability checks on sysfs files right now, so these all need to be fixed. That statement is true but irrelevant, isn't it? There can't be capabilities within sysfs files because the system that does them has no idea what the capabilities would be. If there were capabilities checks, they'd have to be in the implementing routines. I think the questions are twofold: 1. Did anyone actually check for capabilities before assuming world writeable files were wrong? 2. Even if there aren't any capabilities checks in the implementing routines, should there be (are we going the separated capabilities route vs the monolithic root route)? James -- You received this message because you are subscribed to the Google Groups open-iscsi group. To post to this group, send email to open-iscsi@googlegroups.com. To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/open-iscsi?hl=en.
Re: [PATCH 00/20] world-writable files in sysfs and debugfs
On Sat, 2011-03-12 at 23:23 +0300, Vasiliy Kulikov wrote: Vasiliy Kulikov (20): mach-ux500: mbox-db5500: world-writable sysfs fifo file leds: lp5521: world-writable sysfs engine* files leds: lp5523: world-writable engine* sysfs files misc: ep93xx_pwm: world-writable sysfs files rtc: rtc-ds1511: world-writable sysfs nvram file scsi: aic94xx: world-writable sysfs update_bios file scsi: iscsi: world-writable sysfs priv_sess file These are still not merged :( OK, so I've not been tracking where we are in the dizzying ride on security systems. However, I thought we landed up in the privilege separation arena using capabilities. That means that world writeable files aren't necessarily a problem as long as the correct capabilities checks are in place, right? James -- You received this message because you are subscribed to the Google Groups open-iscsi group. To post to this group, send email to open-iscsi@googlegroups.com. To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/open-iscsi?hl=en.
Re: [Security] [PATCH 00/20] world-writable files in sysfs and debugfs
On Tue, 2011-03-15 at 07:18 -0700, Greg KH wrote: On Tue, Mar 15, 2011 at 07:50:28AM -0400, James Bottomley wrote: On Mon, 2011-03-14 at 20:09 -0700, Greg KH wrote: There are no capability checks on sysfs files right now, so these all need to be fixed. That statement is true but irrelevant, isn't it? There can't be capabilities within sysfs files because the system that does them has no idea what the capabilities would be. If there were capabilities checks, they'd have to be in the implementing routines. Ah, you are correct, sorry for the misunderstanding. I think the questions are twofold: 1. Did anyone actually check for capabilities before assuming world writeable files were wrong? I do not think so as the majority (i.e. all the ones that I looked at) did no such checks. OK, as long as someone checked, I'm happy. 2. Even if there aren't any capabilities checks in the implementing routines, should there be (are we going the separated capabilities route vs the monolithic root route)? I think the general consensus is that we go the monolithic root route for sysfs files in that we do not allow them to be world writable. Do you have any exceptions that you know of that do these checks? Heh, I didn't call our security vacillations a dizzying ride for nothing. I know the goal once was to try to run a distro without root daemons (which is what required the capabilities stuff). I'm actually trying to avoid the issue ... I just want to make sure that people who care aren't all moving in different directions. James -- You received this message because you are subscribed to the Google Groups open-iscsi group. To post to this group, send email to open-iscsi@googlegroups.com. To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/open-iscsi?hl=en.
Re: [Security] [PATCH 00/20] world-writable files in sysfs and debugfs
On Tue, 2011-03-15 at 19:08 +0300, Vasiliy Kulikov wrote: On Tue, Mar 15, 2011 at 07:50 -0400, James Bottomley wrote: 1. Did anyone actually check for capabilities before assuming world writeable files were wrong? I didn't check all these files as I haven't got these hardware :-) You don't need the hardware to check ... the question becomes is a capabilities test sitting in the implementation or not. But as I can chmod a+w all sysfs files on my machine and they all become sensible to nonroot writes, I suppose there is nothing preventing nonroot users from writing to these buggy sysfs files. As you can see, there are no capable() checks in these drivers in open() or write(). 2. Even if there aren't any capabilities checks in the implementing routines, should there be (are we going the separated capabilities route vs the monolithic root route)? IMO, In any case old good DAC security model must not be obsoleted just because someone thinks that MAC or anything else is more convenient for him. If sysfs is implemented via filesystem then it must support POSIX permissions semantic. MAC is very good in _some_ cases, but not instead of DAC. Um, I'm not sure that's even an issue. capabilities have CAP_ADMIN which is precisely the same check as owner == root. We use this a lot because ioctls ignore the standard unix DAC model. James -- You received this message because you are subscribed to the Google Groups open-iscsi group. To post to this group, send email to open-iscsi@googlegroups.com. To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/open-iscsi?hl=en.
Re: [PATCH 1/5] BNX2I - Add 5771E device support to bnx2i driver
On Wed, 2009-12-09 at 20:45 -0600, Mike Christie wrote: Reviewed-by: Mike Christie micha...@cs.wisc.edu But not by checkpatch: ERROR: trailing whitespace #23: FILE: drivers/scsi/bnx2i/bnx2i_init.c:90: +^I^Iprintk(KERN_ALERT bnx2i: unknown device, 0x%x\n, $ total: 1 errors, 0 warnings, 13 lines checked I've fixed it up. And the several other whitespace problems in the rest of the patch set. James -- You received this message because you are subscribed to the Google Groups open-iscsi group. To post to this group, send email to open-is...@googlegroups.com. To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/open-iscsi?hl=en.
Re: [PATCH 2.6.30-rc] cxgb3i -- fixed connection error when vlan is enabled
On Sat, 2009-06-27 at 12:52 -0500, Mike Christie wrote: On 06/26/2009 05:17 PM, k...@chelsio.com wrote: [PATCH 2.6.30-rc] cxgb3i -- fixed connection error when vlan is enabled From: Karen Xiek...@chelsio.com There is a bug when VLAN is configured on the cxgb3 interface, the iscsi conn. would be denied with message cxgb3i: NOT going through cxgbi device. This patch added code to get the real egress net_device when vlan is configured. Signed-off-by: Karen Xiek...@chelsio.com --- drivers/scsi/cxgb3i/cxgb3i_iscsi.c |4 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/drivers/scsi/cxgb3i/cxgb3i_iscsi.c b/drivers/scsi/cxgb3i/cxgb3i_iscsi.c index 04a4374..60013a4 100644 --- a/drivers/scsi/cxgb3i/cxgb3i_iscsi.c +++ b/drivers/scsi/cxgb3i/cxgb3i_iscsi.c @@ -13,6 +13,7 @@ #includelinux/inet.h #includelinux/crypto.h +#includelinux/if_vlan.h #includenet/tcp.h #includescsi/scsi_cmnd.h #includescsi/scsi_device.h @@ -183,6 +184,9 @@ static struct cxgb3i_hba *cxgb3i_hba_find_by_netdev(struct net_device *ndev) struct cxgb3i_adapter *snic; int i; + if (ndev-priv_flags IFF_802_1Q_VLAN) + ndev = vlan_dev_real_dev(ndev); + read_lock(cxgb3i_snic_rwlock); list_for_each_entry(snic,cxgb3i_snic_list, list_head) { for (i = 0; i snic-hba_cnt; i++) { It looks ok, but when touching network stuff you might want to cc the netdev list in the future. Well, maybe for non-trivial stuff at least. This might be fine. Reviewed-by: Mike Christie micha...@cs.wisc.edu Thanks, but actually this patch gives a rejection here because of a commit made by Herbert Xu which is already in mainline: commit f00a3328bf9ecff46abd68a421693ba71cd16fc8 Author: Herbert Xu herb...@gondor.apana.org.au Date: Sat May 30 13:40:04 2009 +1000 [SCSI] cxgb3i: Include net/dst.h for struct dst_cache It's simple enough to fix up, so I did it, but next time could you (Karen) check your patches against the relevant trees to make sure they're up to date. James --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups open-iscsi group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/open-iscsi -~--~~~~--~~--~--~---
Re: [PATCH 1/2 2.6.30-rc] cxgb3i -- add a refcnt to track ddp usage
On Sat, 2009-06-13 at 14:29 -0700, k...@chelsio.com wrote: [PATCH 1/2 2.6.30-rc] cxgb3i -- add a refcnt to track ddp usage From: Karen Xie k...@chelsio.com The iscsi ddp functionality could be used by multiple iscsi entities, add a refcnt to keep track of it, so we would not release it pre-maturely. The code is fine as it stands but, I wonder, would you consider using a kref for this? The reasons are twofold: 1. It's a well understood kernel paradigm that works ... this would be helpful for the far distant time when chelsio no longer wants to maintain this driver. 2. It includes useful and appropriate warnings for common bugs in refcounted code, such as use of a freed reference. James --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups open-iscsi group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/open-iscsi -~--~~~~--~~--~--~---
Re: [PATCH] iscsi_tcp - make padbuf non-static
On Thu, 2009-01-08 at 15:06 -0600, Mike Christie wrote: Karen Xie wrote: [PATCH] iscsi_tcp - make padbuf non-static From: Karen Xie k...@chelsio.com virt_to_page() call should not be used on kernel text and data addresses. virt_to_page() is used by sg_init_one(). So change padbuf to be allocated within iscsi_segment. Signed-off-by: Karen Xie k...@chelsio.com Thanks for finding this. Acked-by: Mike Christie micha...@cs.wisc.edu Could one of you regenerate this against current git head, please, it seems to have suffered from the iscsi to libiscsi move. James --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups open-iscsi group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to open-iscsi+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/open-iscsi -~--~~~~--~~--~--~---
Re: [PATCH 0/3 ver2] iscsi bidi varlen support
On Mon, 2008-02-18 at 17:08 +0200, Boaz Harrosh wrote: But ... James? is there any chance these can go into scsi-rc-fixes for the 2.6.25 kernel? The reason they are so late was mainly because of a fallout in the merge process and a bug that was introduced because of that, but they were intended to go together with bidi into 2.6.25. Also as an important client code to the bidi-api that is introduced in 2.6.25 kernel. Well, I think you know the answer to that one under Linus' rules for non merge window submission. It's not a bug fix; we haven't even put it into -mm for testing and it's a pretty invasive change. James --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups open-iscsi group. To post to this group, send email to open-iscsi@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/open-iscsi -~--~~~~--~~--~--~---