2006-02-06 19:36:37

by Pekka Enberg

[permalink] [raw]
Subject: [RFC/PATCH] block: undeprecate ll_rw_block()

From: Pekka Enberg <[email protected]>

This patch removes the DEPRECATED comment from ll_rw_block(). The function
is still in active use and there isn't any real replacement for it.

Cc: Andrew Morton <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Signed-off-by: Pekka Enberg <[email protected]>
---

fs/buffer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Index: 2.6/fs/buffer.c
===================================================================
--- 2.6.orig/fs/buffer.c
+++ 2.6/fs/buffer.c
@@ -2830,7 +2830,7 @@ int submit_bh(int rw, struct buffer_head
}

/**
- * ll_rw_block: low-level access to block devices (DEPRECATED)
+ * ll_rw_block: low-level access to block devices
* @rw: whether to %READ or %WRITE or %SWRITE or maybe %READA (readahead)
* @nr: number of &struct buffer_heads in the array
* @bhs: array of pointers to &struct buffer_head



2006-02-06 21:11:09

by Jens Axboe

[permalink] [raw]
Subject: Re: [RFC/PATCH] block: undeprecate ll_rw_block()

On Mon, Feb 06 2006, Pekka Enberg wrote:
> From: Pekka Enberg <[email protected]>
>
> This patch removes the DEPRECATED comment from ll_rw_block(). The function
> is still in active use and there isn't any real replacement for it.

It is still deprecated, so I think the comment should stay. There are
plenty ways to accomplish what ll_rw_block does (and more efficiently,
array of bh's is not very nice to say the least) and the buffer_head
isn't even an io unit anymore.

--
Jens Axboe

2006-02-07 07:20:24

by Pekka Enberg

[permalink] [raw]
Subject: Re: [RFC/PATCH] block: undeprecate ll_rw_block()

On Mon, Feb 06 2006, Pekka Enberg wrote:
> > This patch removes the DEPRECATED comment from ll_rw_block(). The function
> > is still in active use and there isn't any real replacement for it.

On Mon, 6 Feb 2006, Jens Axboe wrote:
> It is still deprecated, so I think the comment should stay. There are
> plenty ways to accomplish what ll_rw_block does (and more efficiently,
> array of bh's is not very nice to say the least) and the buffer_head
> isn't even an io unit anymore.

To clarify, what ways are there? When we need to access the data, use
submit_bh() and when we just want the I/O to be done, generic_make_request()?

Pekka

2006-02-07 07:39:17

by Jens Axboe

[permalink] [raw]
Subject: Re: [RFC/PATCH] block: undeprecate ll_rw_block()

On Tue, Feb 07 2006, Pekka J Enberg wrote:
> On Mon, Feb 06 2006, Pekka Enberg wrote:
> > > This patch removes the DEPRECATED comment from ll_rw_block(). The function
> > > is still in active use and there isn't any real replacement for it.
>
> On Mon, 6 Feb 2006, Jens Axboe wrote:
> > It is still deprecated, so I think the comment should stay. There are
> > plenty ways to accomplish what ll_rw_block does (and more efficiently,
> > array of bh's is not very nice to say the least) and the buffer_head
> > isn't even an io unit anymore.
>
> To clarify, what ways are there? When we need to access the data, use
> submit_bh() and when we just want the I/O to be done,
> generic_make_request()?

Generally you want to move to using a bio instead of a bh. Once you do
that, you can submit > 1 page of io a lot more efficiently than what
ll_rw_block() is doing. submit_bh() is just a 'wrapper' on top of the
real io interface, your explanation of the two doesn't make sense.

generic_make_request() is typically something a low level driver like md
or dm would use to submit a formed bio to a device, it's not something
you'd expect other parts of the kernel to use. If you look at the newer
io parts in the kernel (in fs/ and mm/), you'll see them using
submit_bio() mostly.

--
Jens Axboe