On Thu, 2015-08-13 at 11:07 -0600, Jens Axboe wrote:
> On 08/13/2015 11:03 AM, Ming Lin wrote:
> > On Thu, 2015-08-13 at 10:51 -0600, Jens Axboe wrote:
> >> On 08/12/2015 01:07 AM, Ming Lin wrote:
> >>> Hi Jens,
> >>>
> >>> Neil/Mike/Martin have acked/reviewed PATCH 1.
> >>> Now it's ready. Could y
On 08/13/2015 11:03 AM, Ming Lin wrote:
On Thu, 2015-08-13 at 10:51 -0600, Jens Axboe wrote:
On 08/12/2015 01:07 AM, Ming Lin wrote:
Hi Jens,
Neil/Mike/Martin have acked/reviewed PATCH 1.
Now it's ready. Could you please apply this series?
https://git.kernel.org/cgit/linux/kernel/git/mlin/lin
On Thu, 2015-08-13 at 10:51 -0600, Jens Axboe wrote:
> On 08/12/2015 01:07 AM, Ming Lin wrote:
> > Hi Jens,
> >
> > Neil/Mike/Martin have acked/reviewed PATCH 1.
> > Now it's ready. Could you please apply this series?
> >
> > https://git.kernel.org/cgit/linux/kernel/git/mlin/linux.git/log/?h=block-
On 08/12/2015 01:07 AM, Ming Lin wrote:
Hi Jens,
Neil/Mike/Martin have acked/reviewed PATCH 1.
Now it's ready. Could you please apply this series?
https://git.kernel.org/cgit/linux/kernel/git/mlin/linux.git/log/?h=block-generic-req
Please note that, for discard, we cap the size at 2G.
We'll ch
ately
v3:
- rebase on top of 4.1-rc2
- support for QUEUE_FLAG_SG_GAPS
- update commit logs of patch 2&4
- split bio for chunk_aligned_read
v2: https://lkml.org/lkml/2015/4/28/28
v1: https://lkml.org/lkml/2014/12/22/128
This is the 6th attempt of simplifying block layer based on immutable
biove
On Mon, Jul 27, 2015 at 3:11 PM, Ming Lin wrote:
> It's more interesting if we look at how many bios are allocated for each
> application IO request.
>
> e.g. 10+2 RAID6 with 128K chunk.
>
> Assume we only consider device max_segments limitation.
>
> # cat /sys/block/md0/queue/max_segments
> 126
>
On Mon, 2015-07-27 at 13:50 -0400, Mike Snitzer wrote:
> On Thu, Jul 23 2015 at 2:21pm -0400,
> Ming Lin wrote:
>
> > On Mon, 2015-07-13 at 11:35 -0400, Mike Snitzer wrote:
> > > On Mon, Jul 13 2015 at 1:12am -0400,
> > > Ming Lin wrote:
> > >
> > > > On Mon, 2015-07-06 at 00:11 -0700, m...@k
On Thu, Jul 23 2015 at 2:21pm -0400,
Ming Lin wrote:
> On Mon, 2015-07-13 at 11:35 -0400, Mike Snitzer wrote:
> > On Mon, Jul 13 2015 at 1:12am -0400,
> > Ming Lin wrote:
> >
> > > On Mon, 2015-07-06 at 00:11 -0700, m...@kernel.org wrote:
> > > > Hi Mike,
> > > >
> > > > On Wed, 2015-06-10 a
On Tue, Jul 14, 2015 at 01:51:26PM -0700, Ming Lin wrote:
> On Mon, 2015-07-13 at 11:35 -0400, Mike Snitzer wrote:
> > On Mon, Jul 13 2015 at 1:12am -0400,
> > Ming Lin wrote:
> >
> > > On Mon, 2015-07-06 at 00:11 -0700, m...@kernel.org wrote:
> > > > Hi Mike,
> > > >
> > > > On Wed, 2015-06-10
On Mon, 2015-07-13 at 11:35 -0400, Mike Snitzer wrote:
> On Mon, Jul 13 2015 at 1:12am -0400,
> Ming Lin wrote:
>
> > On Mon, 2015-07-06 at 00:11 -0700, m...@kernel.org wrote:
> > > Hi Mike,
> > >
> > > On Wed, 2015-06-10 at 17:46 -0400, Mike Snitzer wrote:
> > > > I've been busy getting DM cha
Ming Lin writes:
> On Mon, 2015-07-13 at 11:35 -0400, Mike Snitzer wrote:
>> I will do additional review to answer 1 and 2 above. And Jeff Moyer
>> told me he'd test the patchset on one of his testbeds.
>
> Hi Jeff,
>
> FYI, here is a fix for patch 1.
> Or you can pull from my tree.
> https://gi
On Mon, 2015-07-13 at 11:35 -0400, Mike Snitzer wrote:
> I will do additional review to answer 1 and 2 above. And Jeff Moyer
> told me he'd test the patchset on one of his testbeds.
Hi Jeff,
FYI, here is a fix for patch 1.
Or you can pull from my tree.
https://git.kernel.org/cgit/linux/kernel/gi
On Mon, 2015-07-13 at 11:35 -0400, Mike Snitzer wrote:
> On Mon, Jul 13 2015 at 1:12am -0400,
> Ming Lin wrote:
>
> > On Mon, 2015-07-06 at 00:11 -0700, m...@kernel.org wrote:
> > > Hi Mike,
> > >
> > > On Wed, 2015-06-10 at 17:46 -0400, Mike Snitzer wrote:
> > > > I've been busy getting DM cha
On Mon, Jul 13 2015 at 1:12am -0400,
Ming Lin wrote:
> On Mon, 2015-07-06 at 00:11 -0700, m...@kernel.org wrote:
> > Hi Mike,
> >
> > On Wed, 2015-06-10 at 17:46 -0400, Mike Snitzer wrote:
> > > I've been busy getting DM changes for the 4.2 merge window finalized.
> > > As such I haven't connec
allow __blk_queue_bounce() to handle bios larger than
> BIO_MAX_PAGES".
> Will send it seperately
>
> v3:
> - rebase on top of 4.1-rc2
> - support for QUEUE_FLAG_SG_GAPS
> - update commit logs of patch 2&4
> - split bio for chunk_aligned_read
>
&
BIO_MAX_PAGES".
Will send it seperately
v3:
- rebase on top of 4.1-rc2
- support for QUEUE_FLAG_SG_GAPS
- update commit logs of patch 2&4
- split bio for chunk_aligned_read
v2: https://lkml.org/lkml/2015/4/28/28
v1: https://lkml.org/lkml/2014/12/22/128
This is the 5th attempt of simpl
On Wed, Jun 3, 2015 at 6:28 AM, Jeff Moyer wrote:
> Christoph Hellwig writes:
>
>> On Sun, May 31, 2015 at 11:15:09PM -0700, Ming Lin wrote:
>>> > Except for that these changes looks good, and the previous version
>>> > passed my tests fine, so with some benchmarks you'ĺl have my ACK.
>>>
>>> Can
Christoph Hellwig writes:
> On Sun, May 31, 2015 at 11:15:09PM -0700, Ming Lin wrote:
>> > Except for that these changes looks good, and the previous version
>> > passed my tests fine, so with some benchmarks you'ĺl have my ACK.
>>
>> Can I have your ACK with these numbers?
>> https://lkml.org/l
On Sun, May 31, 2015 at 11:15:09PM -0700, Ming Lin wrote:
> > Except for that these changes looks good, and the previous version
> > passed my tests fine, so with some benchmarks you'ĺl have my ACK.
>
> Can I have your ACK with these numbers?
> https://lkml.org/lkml/2015/6/1/38
Looks good to me.
On Sat, May 23, 2015 at 7:15 AM, Christoph Hellwig wrote:
> On Fri, May 22, 2015 at 11:18:32AM -0700, Ming Lin wrote:
>> This will bring not only performance improvements, but also a great amount
>> of reduction in code complexity all over the block layer. Performance gain
>> is possible due to th
On Mon, May 25, 2015 at 6:51 AM, Christoph Hellwig wrote:
> On Sun, May 24, 2015 at 12:37:32AM -0700, Ming Lin wrote:
>> > Except for that these changes looks good, and the previous version
>> > passed my tests fine, so with some benchmarks you'ĺl have my ACK.
>>
>> I'll test it on a 2 sockets ser
On Sun, May 24, 2015 at 12:37:32AM -0700, Ming Lin wrote:
> > Except for that these changes looks good, and the previous version
> > passed my tests fine, so with some benchmarks you'ĺl have my ACK.
>
> I'll test it on a 2 sockets server with 10 NVMe drives on Monday.
> I'm going to run fio tests:
On Sat, May 23, 2015 at 7:15 AM, Christoph Hellwig wrote:
> On Fri, May 22, 2015 at 11:18:32AM -0700, Ming Lin wrote:
>> This will bring not only performance improvements, but also a great amount
>> of reduction in code complexity all over the block layer. Performance gain
>> is possible due to th
On Fri, May 22, 2015 at 11:18:32AM -0700, Ming Lin wrote:
> This will bring not only performance improvements, but also a great amount
> of reduction in code complexity all over the block layer. Performance gain
> is possible due to the fact that bio_add_page() does not have to check
> unnecesary c
QUEUE_FLAG_SG_GAPS
- update commit logs of patch 2&4
- split bio for chunk_aligned_read
v2: https://lkml.org/lkml/2015/4/28/28
v1: https://lkml.org/lkml/2014/12/22/128
This is the 4th attempt of simplifying block layer based on immutable
biovecs. Immutable biovecs, implemented by Kent
On Wed, May 20, 2015 at 5:48 AM, Christoph Hellwig wrote:
> Passes test fine for me so far. You might also want to throw in the
> following patch to make it more useful:
I'll add it to next version.
Thanks.
>
> ---
> From a30035d4ae040723a6c94143db90231941d0caf7 Mon Sep 17 00:00:00 2001
> From
Passes test fine for me so far. You might also want to throw in the
following patch to make it more useful:
---
>From a30035d4ae040723a6c94143db90231941d0caf7 Mon Sep 17 00:00:00 2001
From: Kent Overstreet
Date: Tue, 19 May 2015 14:31:01 +0200
Subject: block: remove bio_get_nr_vecs()
We can alw
I like this conceptually, so if we could get it into further testing
that would be useful. Jens, are you fine with the general approach?
If yes I'll try to spend some more ressources on getting it ready.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a m
able
biovecs. Immutable biovecs, implemented by Kent Overstreet, have been
available in mainline since v3.14. Its original goal was actually making
generic_make_request() accept arbitrarily sized bios, and pushing the
splitting down to the drivers or wherever it's required. See also
discussions in
Dongsu sent v1 of this patchset.
https://lkml.org/lkml/2014/12/22/128
This is the second attempt of simplifying block layer based on immutable
biovecs. Immutable biovecs, implemented by Kent Overstreet, have been
available in mainline since v3.14. Its original goal was actually making
> - move a patch "btrfs: make use of immutable biovecs" to the upcoming series.
which upcoming series is that?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vg
This is the second attempt of simplifying block layer based on immutable
biovecs. Immutable biovecs, implemented by Kent Overstreet, have been
available in mainline since v3.14. Its original goal was actually making
generic_make_request() accept arbitrarily sized bios, and pushing the
splitting
On 23.12.2014 02:51, Christoph Hellwig wrote:
> On Mon, Dec 22, 2014 at 12:48:43PM +0100, Dongsu Park wrote:
> > From: Kent Overstreet
> >
> > Increase bio->bi_remaining instead of calling bio_get(),
> > and call bio_end() instead of bio_put() upon buffer_head submission.
>
> Nees an explanation
On 23.12.2014 02:35, Christoph Hellwig wrote:
> This seems like it could be applied without the rest of the series,
> right? Might be worth to get it into the btrfs tree ASAP?
Ah, you're right.
While patch #5 must be in this series, patch #6 does not necessarily
have to be included. This conversi
On Mon, Dec 22, 2014 at 12:48:43PM +0100, Dongsu Park wrote:
> From: Kent Overstreet
>
> Increase bio->bi_remaining instead of calling bio_get(),
> and call bio_end() instead of bio_put() upon buffer_head submission.
Nees an explanation on why this is done.
> Also make bio submission in kernel/
This seems like it could be applied without the rest of the series,
right? Might be worth to get it into the btrfs tree ASAP?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel
From: Kent Overstreet
Make use of the new API for immutable biovecs, instead of iterating
bi_io_vec[] manually just like done in the old era. That means, e.g.
calling bio_for_each_segment() by passing bvec and iter literally,
using bio_advance_iter() for looking up the next range of biovec
ome codes that have been still using the older API
can be converted in order to use the immutable biovecs API.
Signed-off-by: Kent Overstreet
[dpark: add more description in commit message]
Signed-off-by: Dongsu Park
Cc: Al Viro
Cc: linux-fsde...@vger.kernel.org
Cc: linux...@vger.kernel.org
---
This is the first attempt of simplifying block layer based on immutable
biovecs. Immutable biovecs, implemented by Kent Overstreet, have been
available in mainline since v3.14. Its original goal was actually making
generic_make_request() accept arbitrarily sized bios, and pushing the
splitting
Near total rewrite of fs/direct-io.c. This makes use of our new bio
splitting functionality, and the fact that generic_make_request() will
take arbitrary size bios - we allocate a bio, pin pages to it directly,
then call the getblocks() function to map it wherever the filesystem
tells us - splittin
Jens - for the "silence spurious compiler warnings", if you want to drop the
previous version of that patch and replace with this one, it appears
uninitialized_var() doesn't work on structs. And I somehow lost the btrfs
fixes Chris Mason did for bio chaining and had to redo them so hopefully he
can
On Tue, Nov 26 2013, Kent Overstreet wrote:
> On Mon, Nov 25, 2013 at 10:05:58PM -0800, Christoph Hellwig wrote:
> > On Mon, Nov 25, 2013 at 01:52:16PM -0800, Kent Overstreet wrote:
> > > Jens - here's immutable biovecs, rebased and ready for 3.14. Changes
> > >
Now that we've got a mechanism for immutable biovecs -
bi_iter.bi_bvec_done - we need to convert drivers to use primitives that
respect it instead of using the bvec array directly.
The aoe code no longer has to manually iterate over partial bvecs, so
some struct members go away - other s
Now that we've got a mechanism for immutable biovecs -
bi_iter.bi_bvec_done - we need to convert drivers to use primitives that
respect it instead of using the bvec array directly.
Signed-off-by: Kent Overstreet
Cc: Jens Axboe
Cc: NeilBrown
Cc: Alasdair Kergon
Cc: dm-de...@redha
iter;
+ struct bio_vec bv;
+ struct bio *bio;
+
+ /*
+* Pre immutable biovecs, __bio_clone() used to just do a memcpy from
+* bio_src->bi_io_vec to bio->bi_io_vec.
+*
+* We can't do that anymore, because:
+*
+* - The point of cloning
Now that we've got a mechanism for immutable biovecs -
bi_iter.bi_bvec_done - we need to convert drivers to use primitives that
respect it instead of using the bvec array directly.
Signed-off-by: Kent Overstreet
Cc: Jens Axboe
Cc: Sage Weil
Cc: ceph-de...@vger.kernel.org
---
include/
On Mon, Nov 25, 2013 at 10:05:58PM -0800, Christoph Hellwig wrote:
> On Mon, Nov 25, 2013 at 01:52:16PM -0800, Kent Overstreet wrote:
> > Jens - here's immutable biovecs, rebased and ready for 3.14. Changes since
> > the
> > last version of the series:
>
> Can you
On Mon, Nov 25, 2013 at 01:52:16PM -0800, Kent Overstreet wrote:
> Jens - here's immutable biovecs, rebased and ready for 3.14. Changes since the
> last version of the series:
Can you do a resend of the patch series to all involved lists first so
we can have a detailed look at the curr
Jens - here's immutable biovecs, rebased and ready for 3.14. Changes since the
last version of the series:
* bio_clone_bioset() retains the old behaviour, as previously discussed -
bio_clone_fast() is being used by bcache, dm and the new bio_split().
There aren't that many us
On 10/31/2013 03:27 PM, Kent Overstreet wrote:
> Signed-off-by: Kent Overstreet
> Cc: Jens Axboe
> Cc: NeilBrown
> Cc: Christoph Hellwig
Added, and incorporated the changes suggested by Randy.
--
Jens Axboe
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the bo
Documentation/block/biovecs.txt
> @@ -0,0 +1,111 @@
> +
> +Immutable biovecs and biovec iterators:
> +===
> +
> +Kent Overstreet
> +
> +As of 3.13, biovecs should never be modified after a bio has been submitted.
> +Instead, we have a new struct
/block/biovecs.txt
diff --git a/Documentation/block/biovecs.txt b/Documentation/block/biovecs.txt
new file mode 100644
index 000..34711fa
--- /dev/null
+++ b/Documentation/block/biovecs.txt
@@ -0,0 +1,111 @@
+
+Immutable biovecs and biovec iterators
On Tue, Oct 29, 2013 at 02:36:47PM -0600, Jens Axboe wrote:
> On Tue, Oct 29 2013, Kent Overstreet wrote:
> > Jens - this patch series is ready to go, driver maintainers have reviewed
> > and
> > tested it and the code's been essentially done for probably a year now -
> > can we
> > get this into
On Tue, Oct 29 2013, Kent Overstreet wrote:
> Jens - this patch series is ready to go, driver maintainers have reviewed and
> tested it and the code's been essentially done for probably a year now - can
> we
> get this into 3.13?
We can - your series doesn't apply to for-3.13/core however, can yo
Jens - this patch series is ready to go, driver maintainers have reviewed and
tested it and the code's been essentially done for probably a year now - can we
get this into 3.13?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.ke
Now that we've got a mechanism for immutable biovecs -
bi_iter.bi_bvec_done - we need to convert drivers to use primitives that
respect it instead of using the bvec array directly.
Signed-off-by: Kent Overstreet
Cc: Jens Axboe
Cc: NeilBrown
Cc: Alasdair Kergon
Cc: dm-de...@redha
Now that we've got a mechanism for immutable biovecs -
bi_iter.bi_bvec_done - we need to convert drivers to use primitives that
respect it instead of using the bvec array directly.
The aoe code no longer has to manually iterate over partial bvecs, so
some struct members go away - other s
Now that we've got a mechanism for immutable biovecs -
bi_iter.bi_bvec_done - we need to convert drivers to use primitives that
respect it instead of using the bvec array directly.
Signed-off-by: Kent Overstreet
Cc: Jens Axboe
Cc: Sage Weil
Cc: ceph-de...@vger.kernel.org
---
include/
bvec_iter
bio-integrity: Convert to bvec_iter
block: Kill bio_segments()/bi_vcnt usage
block: Convert drivers to immutable biovecs
aoe: Convert to immutable biovecs
ceph: Convert to immutable biovecs
block: Kill bio_iovec_idx(), __bio_iovec()
rbd: Refacto
ng immutable bio work?
> >
> > Hey Christoph,
> >
> > Have you been over the patchset? Looks sane to you?
> >
> > Given how disruptive this patchset is to the block layer I'm wondering
> > how painful this change will be in combination with Jens' bl
ooks sane to you?
>
> Given how disruptive this patchset is to the block layer I'm wondering
> how painful this change will be in combination with Jens' blk-mq
> changes. I'd prefer to see blk-mq before immutable biovecs; but I have
> my own selfish reasons for that.
On Tue, Sep 24, 2013 at 04:00:12AM -0700, Christoph Hellwig wrote:
> Just curious, what's the state of the remaining immutable bio work?
Mostly just waiting for Jens to pull it, though I did discover an issue
with the "generic bio chaining" patch last time I was testing it - but
that's towards the
shrink struct bio again, too.
> Given how disruptive this patchset is to the block layer I'm wondering
> how painful this change will be in combination with Jens' blk-mq
> changes. I'd prefer to see blk-mq before immutable biovecs; but I have
> my own selfish reasons for th
painful this change will be in combination with Jens' blk-mq
changes. I'd prefer to see blk-mq before immutable biovecs; but I have
my own selfish reasons for that.
I'm also concerned about DM regressions given that a lot of DM code to
handle splitting a bio that spans target boundari
Just curious, what's the state of the remaining immutable bio work?
On Thu, Aug 08, 2013 at 02:15:29PM -0700, Kent Overstreet wrote:
> > What is preventing you from sending those out as well? While it's not
> > absolutely nessecary it would certainly be good if we'd avoid a struct
> > bio size re
On Thu, Aug 08, 2013 at 08:09:54AM -0700, Christoph Hellwig wrote:
> On Wed, Aug 07, 2013 at 02:54:09PM -0700, Kent Overstreet wrote:
> > _However_, I have more patches (that depend on this patch series) to get
> > that back - segment merging improvements that get rid of
> > bi_seg_front_size, bi_s
On Wed, Aug 07, 2013 at 02:54:09PM -0700, Kent Overstreet wrote:
> _However_, I have more patches (that depend on this patch series) to get
> that back - segment merging improvements that get rid of
> bi_seg_front_size, bi_seg_back_size, and bi_phys_segments. Once all that
> is in it should be a ne
Now that we've got a mechanism for immutable biovecs -
bi_iter.bi_bvec_done - we need to convert drivers to use primitives that
respect it instead of using the bvec array directly.
Signed-off-by: Kent Overstreet
Cc: Jens Axboe
Cc: NeilBrown
Cc: "Ed L. Cashin"
Cc: Alasdair Ke
Now that we've got a mechanism for immutable biovecs -
bi_iter.bi_bvec_done - we need to convert drivers to use primitives that
respect it instead of using the bvec array directly.
Signed-off-by: Kent Overstreet
Cc: Jens Axboe
Cc: Sage Weil
Cc: ceph-de...@vger.kernel.org
---
include/
Jens - here's the immutable biovec patch series. I'd really like to get
this stuff into 3.12 if at all possible, and I think this series ought
to be ready - and, the dio rewrite and various other fun stuff is gated
on this stuff.
Not much in these patches has changed over the past six months or so
street wrote:
> Now that we've got a mechanism for immutable biovecs -
> bi_iter.bi_bvec_done - we need to convert drivers to use primitives that
> respect it instead of using the bvec array directly.
>
> Signed-off-by: Kent Overstreet
> Cc: Jens Axboe
> Cc: NeilBr
On Tue, Jun 11, 2013 at 03:20:12PM +1000, Dave Chinner wrote:
> Please test with XFS and CONFIG_XFS_DEBUG=y - xfstests will stress
> the dio subsystem a lot more when it is run on XFS. Indeed, xfstests
> generic/013 assert fails almost immediately with:
Thanks - I haven't used xfstests much before
On Sat, Jun 08, 2013 at 07:18:42PM -0700, Kent Overstreet wrote:
> Immutable biovecs: Drivers no longer modify the biovec array directly
> (bv_len/bv_offset in particular) - we add a real iterator to struct bio
> that lets drivers partially complete a bio while only modifying the
> i
On Sun, Jun 09, 2013 at 10:34:08AM +0200, Geert Uytterhoeven wrote:
> On Sun, Jun 9, 2013 at 4:18 AM, Kent Overstreet
> wrote:
> > * Changing all the drivers to go through the iterator means that we can
> >submit a partially completed bio to generic_make_request() - this
> >previously wo
On Sun, Jun 9, 2013 at 4:18 AM, Kent Overstreet wrote:
> * Changing all the drivers to go through the iterator means that we can
>submit a partially completed bio to generic_make_request() - this
>previously worked on some drivers, but worked on others.
Some negation is missing in this s
Immutable biovecs: Drivers no longer modify the biovec array directly
(bv_len/bv_offset in particular) - we add a real iterator to struct bio
that lets drivers partially complete a bio while only modifying the
iterator. The iterator has the existing bi_sector, bi_size, bi_idx
memembers, and also
Now that we've got a mechanism for immutable biovecs -
bi_iter.bi_bvec_done - we need to convert drivers to use primitives that
respect it instead of using the bvec array directly.
Signed-off-by: Kent Overstreet
Cc: Jens Axboe
Cc: NeilBrown
Cc: "Ed L. Cashin"
Cc: Alasdair Ke
This patch series implements immutable biovecs, and converts drivers to
the new primitives.
This is done by pulling bi_sector, bi_size and bi_idx out of struct bio
into a new iterator; to that we add bi_bvec_done which indicates the
number of bytes done in the current bvec.
This means we can
78 matches
Mail list logo