[Drbd-dev] Re: XFS on DRBD

Lars Ellenberg Lars.Ellenberg@linbit.com
Tue, 27 Jul 2004 20:32:09 +0200


/ 2004-07-27 10:15:53 +0200
\ Philipp Reisner:
> On Wednesday 26 May 2004 09:36, you wrote:
> > XFS does I/O on slab-allocated pages, which not a lot other code in
> > the kernel does, and it seems drbd doesn't like that.  Do you have
> > a pointer to the drbd code for Linux 2.6 so I can take a look?
> 
> Hi Christoph,
> 
> Drbd reached release status and finally everything works, but we have a
> rather uggly workaround for XFS.
> 
> We usually use sendpage() to send the data blocks over the network.
> But when XFS hands us its slab-allocated pages over, we may not
> use sendpage. 
> 
>   If we call sendpage on such a page it will crash, since sendpage()
... first does a get_page(), and then ...
>   calls put_page() after the job is done.
 --> but PageSlab(), so: BOOM.
this all happens _before_ any bio_endio is called on the associated bio.

> Christoph,
> 
> IMHO XFS should only pass pages down the IO path which have a correct
> page_count. 
> 
> Which is the right forum to discuss this issue ?

I suggest we either can solve this right here,
or we move this to lkml ...
maybe we should move to lkml anyways, since actually this
is a generic issue: how to pass slab pages around to other
sub systems, which do not know anything about that page,
but expect to be able to
  get_page(); queue_some_asynchronous_work_and_return();
      ... later ... put_page();

	Lars Ellenberg