[Lustre-devel] client i/o and PG_writeback

Ken Hornstein kenh at cmf.nrl.navy.mil
Tue Aug 16 19:01:19 PDT 2011

>For historical reasons (lustre was initially developed for 2.4
>kernels), the 1.8 client holds the page lock over bulk write RPCs.
>Some basic support for PG_writeback was added back in 2007 (see
>bugzilla ticket 11710), but the page lock is still held until
>RPC completion.

Alright, let me ask some potentially dumb questions, no doubt due to my
lack of understanding of the Linux VM system:

- I'm missing the connection between using PG_writeback and selecting pages
  to minimize RPC fragmentation (I mean, I understand why you want to
  minimize RPC fragmentation, I just don't quite understand how PG_writeback
  helps that).  I looked at bugzilla ticket 11710, but that seems to be
  about how using PG_writeback is important for fsync() support.

- As I understand it, you drop PG_locked and set PG_writeback during the
  actual write operation.  Correct?

- How are you planning on implementing this?  Via a new state in the
  cl_page state machine, and setting PG_writeback in the new state?
  A new page lock at the cl_page level?

As far as technical concerns ... as long as code that directly uses
PG_writeback and/or PageWriteback() stays in the llite directory,
then I don't _think_ it will affect portability that much.  I believe
I can simply fake it under MacOS X.


More information about the lustre-devel mailing list