login
Header Space

 
 

Re: [PATCH 09/10] Change table chaining layout

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Jens Axboe <jens.axboe@...>
Cc: Linus Torvalds <torvalds@...>, Boaz Harrosh <bharrosh@...>, Alan Cox <alan@...>, Geert Uytterhoeven <geert@...>, Linux Kernel Development <linux-kernel@...>, <mingo@...>
Date: Thursday, October 25, 2007 - 7:54 am

On Thursday 25 October 2007 19:11:40 Jens Axboe wrote:

Well currently sg_chain() only joins "incomplete" (ie. unterminated) sg 
chains.  That works great for you, but it feels more like a special purpose 
to me.


It was suggested by analogy earlier in this thread, to use a two-level 
structure.

In this case I would have first renamed struct scatterlist to struct 
scatterelem.  Then struct scatterlist looks like:

	struct scatterlist {
		unsigned int num;
		struct scatterelem elems[0];
	};

We'd want a nice macro to declare them for the stack case:

#define DEFINE_SCATTERLIST(name, elems)		\
	struct {				\
		struct scatterlist sg;		\
		struct scatterelem elems[num];	\
	} name

Now we've tied the number and array together, we can introduce:

struct sg_multilist
{
	unsigned int num_scatterlists;
	struct scatterlist *sg_array[0];
};

And, of course, a common way to represent a one-sglist array:

#define DEFINE_SG_MULTI(name, num)			\
	struct {					\
		struct sg_multilist ml;			\
		struct scatterlist *sg_array;		\
		struct scatterlist sg;			\
		struct scatterelem elems[num];		\
	} name = { .ml = { 1 }, .sg_array = &name.sg }

Now simply replace all the places which expect a "struct scatterlist" 
with "struct sg_multilist" and we're done.

Using dangling structures is not as neat as using pointers, but it's very 
efficient.


I changed the sg_chain() function not to take one off the argument.  It made 
more sense when I wrote the virtblk code (here it's natural, since the num 
elements used + 1 == size of array).


Agreed, and it was the use of "prv_nents - 2" in that code which made me think 
the arg should be "num used" not "one past the num used".

Cheers,
Rusty.
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 00/10] SG updates, Jens Axboe, (Mon Oct 22, 2:10 pm)
[PATCH][SG] fix typo in ps3rom.c, Arnd Bergmann, (Tue Oct 23, 10:48 am)
[PATCH 08/10] [SG] Update arch/ to use sg helpers, Jens Axboe, (Mon Oct 22, 2:11 pm)
Re: [PATCH 08/10] [SG] Update arch/ to use sg helpers, Benny Halevy, (Mon Oct 22, 5:10 pm)
[PATCH 07/10] [SG] Update swiotlb to use sg helpers, Jens Axboe, (Mon Oct 22, 2:11 pm)
[PATCH 06/10] [SG] Update net/ to use sg helpers, Jens Axboe, (Mon Oct 22, 2:11 pm)
Re: [PATCH 06/10] [SG] Update net/ to use sg helpers, Christian Borntraeger, (Tue Oct 23, 6:44 am)
Re: [PATCH 06/10] [SG] Update net/ to use sg helpers, Jens Axboe, (Tue Oct 23, 6:45 am)
[PATCH 05/10] [SG] Update fs/ to use sg helpers, Jens Axboe, (Mon Oct 22, 2:10 pm)
[PATCH 04/10] [SG] Update drivers to use sg helpers, Jens Axboe, (Mon Oct 22, 2:10 pm)
Re: [PATCH 04/10] [SG] Update drivers to use sg helpers, Heiko Carstens, (Tue Oct 23, 2:28 am)
Re: [PATCH 04/10] [SG] Update drivers to use sg helpers, Heiko Carstens, (Tue Oct 23, 3:16 am)
[PATCH 03/10] [SG] Update crypto/ to sg helpers, Jens Axboe, (Mon Oct 22, 2:10 pm)
[PATCH] fix ll_rw_blk.c build on s390, Heiko Carstens, (Tue Oct 23, 1:42 am)
[PATCH 10/10] Add CONFIG_DEBUG_SG sg validation, Jens Axboe, (Mon Oct 22, 2:11 pm)
[PATCH 09/10] Change table chaining layout, Jens Axboe, (Mon Oct 22, 2:11 pm)
Re: [PATCH 09/10] Change table chaining layout, Boaz Harrosh, (Tue Oct 23, 1:08 pm)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Tue Oct 23, 2:33 pm)
Re: [PATCH 09/10] Change table chaining layout, Andi Kleen, (Tue Oct 23, 3:56 pm)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Tue Oct 23, 4:20 pm)
Re: [PATCH 09/10] Change table chaining layout, Andi Kleen, (Tue Oct 23, 4:57 pm)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Tue Oct 23, 5:44 pm)
Re: [PATCH 09/10] Change table chaining layout, Geert Uytterhoeven, (Mon Oct 22, 3:39 pm)
Re: [PATCH 09/10] Change table chaining layout, Linus Torvalds, (Mon Oct 22, 3:49 pm)
Re: [PATCH 09/10] Change table chaining layout, Alan Cox, (Mon Oct 22, 4:16 pm)
Re: [PATCH 09/10] Change table chaining layout, Linus Torvalds, (Mon Oct 22, 4:44 pm)
Re: [PATCH 09/10] Change table chaining layout, Alan Cox, (Mon Oct 22, 5:43 pm)
Re: [PATCH 09/10] Change table chaining layout, Linus Torvalds, (Mon Oct 22, 5:47 pm)
Re: [PATCH 09/10] Change table chaining layout, Boaz Harrosh, (Tue Oct 23, 5:29 am)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Tue Oct 23, 5:41 am)
Re: [PATCH 09/10] Change table chaining layout, Ingo Molnar, (Tue Oct 23, 6:33 am)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Tue Oct 23, 6:56 am)
Re: [PATCH 09/10] Change table chaining layout, Ingo Molnar, (Tue Oct 23, 7:27 am)
Re: [PATCH 09/10] Change table chaining layout, Geert Uytterhoeven, (Tue Oct 23, 3:23 pm)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Wed Oct 24, 2:56 am)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Tue Oct 23, 5:46 pm)
Re: [PATCH 09/10] Change table chaining layout, Boaz Harrosh, (Tue Oct 23, 5:50 am)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Tue Oct 23, 5:55 am)
Re: [PATCH 09/10] Change table chaining layout, Boaz Harrosh, (Tue Oct 23, 6:23 am)
Re: [PATCH 09/10] Change table chaining layout, Linus Torvalds, (Tue Oct 23, 11:22 am)
Re: [PATCH 09/10] Change table chaining layout, Rusty Russell, (Thu Oct 25, 4:40 am)
Re: [PATCH 09/10] Change table chaining layout, Linus Torvalds, (Thu Oct 25, 11:40 am)
Re: [PATCH 09/10] Change table chaining layout, Paul Mackerras, (Fri Oct 26, 1:01 am)
Re: [PATCH 09/10] Change table chaining layout, Linus Torvalds, (Fri Oct 26, 10:52 am)
[RFC PATCH 1/2] sg_ring instead of scatterlist chaining, Rusty Russell, (Mon Nov 5, 2:11 am)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Fri Oct 26, 1:28 pm)
Re: [PATCH 09/10] Change table chaining layout, Benny Halevy, (Thu Oct 25, 12:03 pm)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Thu Oct 25, 5:11 am)
Re: [PATCH 09/10] Change table chaining layout, Rusty Russell, (Thu Oct 25, 7:54 am)
Re: [PATCH 09/10] Change table chaining layout, Rusty Russell, (Thu Oct 25, 8:03 pm)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Wed Oct 24, 4:05 am)
Re: [PATCH 09/10] Change table chaining layout, Geert Uytterhoeven, (Wed Oct 24, 5:03 am)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Wed Oct 24, 5:12 am)
Re: [PATCH 09/10] Change table chaining layout, Linus Torvalds, (Wed Oct 24, 11:16 am)
Re: [PATCH 09/10] Change table chaining layout, Olivier Galibert, (Wed Oct 24, 9:35 am)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Wed Oct 24, 9:38 am)
Re: [PATCH 09/10] Change table chaining layout, Olivier Galibert, (Wed Oct 24, 9:45 am)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Tue Oct 23, 6:29 am)
Re: [PATCH 09/10] Change table chaining layout, Geert Uytterhoeven, (Tue Oct 23, 3:18 am)
Re: [PATCH 09/10] Change table chaining layout, David Miller, (Mon Oct 22, 8:07 pm)
Re: [PATCH 09/10] Change table chaining layout, Jeff Garzik, (Mon Oct 22, 5:21 pm)
Re: [PATCH 09/10] Change table chaining layout, Matt Mackall, (Mon Oct 22, 5:47 pm)
Re: [PATCH 09/10] Change table chaining layout, Alan Cox, (Mon Oct 22, 6:52 pm)
Re: [PATCH 09/10] Change table chaining layout, Matt Mackall, (Mon Oct 22, 7:46 pm)
Re: [PATCH 09/10] Change table chaining layout, Jeff Garzik, (Mon Oct 22, 8:11 pm)
Re: [PATCH 09/10] Change table chaining layout, Benny Halevy, (Mon Oct 22, 5:16 pm)
Re: [PATCH 09/10] Change table chaining layout, Matt Mackall, (Mon Oct 22, 4:38 pm)
Re: [PATCH 09/10] Change table chaining layout, Jens Axboe, (Mon Oct 22, 3:52 pm)
powerpc: Fix fallout from sg_page() changes, Olof Johansson, (Tue Oct 23, 12:09 am)
Re: powerpc: Fix fallout from sg_page() changes, Jens Axboe, (Tue Oct 23, 3:13 am)
IB/ehca: Fix sg_page() fallout, Olof Johansson, (Tue Oct 23, 12:31 am)
Re: IB/ehca: Fix sg_page() fallout, Jens Axboe, (Tue Oct 23, 1:05 am)
Re: IB/ehca: Fix sg_page() fallout, Olof Johansson, (Tue Oct 23, 1:54 am)
Re: IB/ehca: Fix sg_page() fallout, Jens Axboe, (Tue Oct 23, 3:12 am)
speck-geostationary