xfs
[Top] [All Lists]

TAKE 971670 - Ensure sync flushes all dirty data to disk

To: sgi.bugs.xfs@xxxxxxxxxxxx, xfs@xxxxxxxxxxx
Subject: TAKE 971670 - Ensure sync flushes all dirty data to disk
From: lachlan@xxxxxxx (Lachlan McIlroy)
Date: Wed, 10 Oct 2007 11:24:16 +1000 (EST)
Sender: xfs-bounce@xxxxxxxxxxx
avoid race in sync_inodes() that can fail to write out all dirty data

In xfs_fs_sync_super() treat a sync the same as a filesystem freeze.
This is needed to force the log to disk for inodes which are not marked
dirty in the Linux inode (the inodes are marked dirty on completion of
the log I/O) and so sync_inodes() will not flush them.

In xfs_fs_write_inode() a synchronous flush will not get an EAGAIN
from xfs_inode_flush() and if an asynchronous flush returns EAGAIN
we should pass it on to the caller.  If we get an error while flushing
the inode then re-dirty it so we can try again later.

Date:  Wed Oct 10 11:22:49 AEST 2007
Workarea:  redback.melbourne.sgi.com:/home/lachlan/isms/2.6.x-preempt
Inspected by:  dgc
Author:  lachlan

The following file(s) were checked into:
  longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb


Modid:  xfs-linux-melb:xfs-kern:29860a
fs/xfs/linux-2.6/xfs_super.c - 1.401 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/linux-2.6/xfs_super.c.diff?r1=text&tr1=1.401&r2=text&tr2=1.400&f=h
        - avoid race in sync_inodes() that can fail to write out all dirty data




<Prev in Thread] Current Thread [Next in Thread>
  • TAKE 971670 - Ensure sync flushes all dirty data to disk, Lachlan McIlroy <=