PAGING PAGE CACHE OWNERS -- HELP [Fwd: NetWare Mirroring and the Page Cache in 2.3.99 Issues]

From: Jeff V. Merkey (jmerkey@timpanogas.com)
Date: Tue Apr 04 2000 - 10:14:51 EST


I need whomever is competent with the page cache to answer some simple
questions. I've looked at the code, and implemented a synchronous
implementation, but want to make the interface the best fit possible.

Whomever is competent to respond, please do so, this is holding up
getting the next release posted, and I've fixed all the bugs previously
found.

Please advise,

Jeff

attached mail follows:



I have some questions relative to the Page Cache for supporting NetWare
mirroring.

It appears that a local implementation of writepage() and readpage() is
where the mapping and I/O setup for the page cache should go for mapping
the mirrors and hotfix info for a block. The readpage() case seems
pretty straightforward -- select a mirror for the block and fill in the
buffer head info for the I/O operation. The writepage() case does not.
I need to be able to point several buffer heads at the same page of
memory, and transact them in a parallel manner (or alternatey do the
same thing from inside of write_page() with the NWFS async manager) .

What's in buffer.c does not appear to be able to do this without a lot
of deadlock problems (see notes in buffer.c, line 742 -
end_buffer_io_async()). prepare_write() would be assumed for a NetWare
mirroring implementation to gang schedule a group of mirrored writes by
calling block_prepare_write multiple times() from inside of the local
filesystem's prepare_write() function (we want to get as much
parallelism as possible).

I am assuming that I can insert my own callback in the buffer_head for
the async I/O without breaking the page cache and trap page I/O errors
and control the release of the operation back to user space when I map
the I/O in get_block() (like the code in end_buffer_io_async() does).
This would allow me to perform hotfix recovery or mirror failover with
the page cache if it does support this.

Are these assumptions correct and will this work without beaking the
page cache?

Jeff

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Apr 07 2000 - 21:00:12 EST