[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20180612180843.GF19433@bombadil.infradead.org>
Date: Tue, 12 Jun 2018 11:08:43 -0700
From: Matthew Wilcox <willy@...radead.org>
To: Bart Van Assche <Bart.VanAssche@....com>
Cc: "kvm@...r.kernel.org" <kvm@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-usb@...r.kernel.org" <linux-usb@...r.kernel.org>,
"virtualization@...ts.linux-foundation.org"
<virtualization@...ts.linux-foundation.org>,
"kent.overstreet@...il.com" <kent.overstreet@...il.com>,
"linux1394-devel@...ts.sourceforge.net"
<linux1394-devel@...ts.sourceforge.net>,
"jgross@...e.com" <jgross@...e.com>,
"axboe@...nel.dk" <axboe@...nel.dk>,
"linux-scsi@...r.kernel.org" <linux-scsi@...r.kernel.org>,
"qla2xxx-upstream@...gic.com" <qla2xxx-upstream@...gic.com>,
"target-devel@...r.kernel.org" <target-devel@...r.kernel.org>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: Re: [PATCH 1/2] Convert target drivers to use sbitmap
On Tue, Jun 12, 2018 at 04:32:03PM +0000, Bart Van Assche wrote:
> On Tue, 2018-06-12 at 09:15 -0700, Matthew Wilcox wrote:
> > On Tue, Jun 12, 2018 at 03:22:42PM +0000, Bart Van Assche wrote:
> > > Please introduce functions in the target core for allocating and freeing a tag
> > > instead of spreading the knowledge of how to allocate and free tags over all
> > > target drivers.
> >
> > I can't without doing an unreasonably large amount of work on drivers that
> > I have no way to test. Some of the drivers have the se_cmd already; some
> > of them don't. I'd be happy to introduce a common function for freeing
> > a tag.
>
> Which target drivers are you referring to? If you are referring to the sbp driver:
> I think that driver is dead and can be removed from the kernel tree. I even don't
> know whether that driver ever has had any users other than the developer of that
> driver.
For example tcm_fc:
tag = sbitmap_queue_get(&se_sess->sess_tag_pool, &cpu);
if (tag < 0)
goto busy;
cmd = &((struct ft_cmd *)se_sess->sess_cmd_map)[tag];
or qla2xxx:
tag = sbitmap_queue_get(&se_sess->sess_tag_pool, &cpu);
if (tag < 0)
return NULL;
cmd = &((struct qla_tgt_cmd *)se_sess->sess_cmd_map)[tag];
The core doesn't know at what offset from the pointer to store the tag
& cpu. Only the individual drivers know their cmd layout.
Powered by blists - more mailing lists