[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

TAKE - xfs delayed allocate fixups and bug fixes



In response to comments from Andrea Archangeli and Andrew Morton,
and a bug report from Andrew Tridgell (is that enough Andrews
in one sentence!), this is a major cleanup of the handling of
delayed allocate pages in xfs and its interactions with the
mainline kernel.

XFS now has a releasepage method - this replaces a bunch of code
in fs/buffer.c which it turns out could never really have worked.
The code in fs/buffer.c has been simplified, and changed to
protect against spinning on the cpu - which some people had
reported as bflushd spinning on the cpu.

It also fixes a corruption problem which Andrew Tridgell reported
under very heavy write pressure, and a deadlock under very heavy
mmap write pressure. This appears to be very hard to hit if that
is any consolation, I think this bug has been around since early
January.

Steve

Date:  Tue Mar 19 09:30:43 PST 2002
Workarea:  jen.americas.sgi.com:/src/lord/xfs-andrea

The following file(s) were checked into:
  bonnie.engr.sgi.com:/isms/slinx/2.4.x-xfs


Modid:  2.4.x-xfs:slinx:114422a
linux/fs/buffer.c - 1.103
	- Revamp the delayed allocate handling, there is less of it now and
	  problems with bdflush spinning should go away.

linux/drivers/block/ll_rw_blk.c - 1.81
	- Move the trap for delayed allocate buffer heads from the ll_rw_block
	  code to submit_bh. This traps all of them rather than just some of them.

linux/fs/xfs/linux/xfs_iops.c - 1.128
	- Add a releasepage method to xfs.

linux/fs/xfs/pagebuf/page_buf_io.c - 1.17
	- Add a release_page method, this converts delalloc pages to real so
	  that try_to_free_buffers can function on them. Revamp pagebuf_write_full_page,
	  it now does not unlock the page, that happens in I/O completion.

linux/fs/xfs/pagebuf/page_buf.h - 1.8
	- definition for pagebuf_release_page