xfs
[Top] [All Lists]

TAKE 981668 - Wait for all I/O on truncate to zero file size

To: sgi.bugs.xfs@xxxxxxxxxxxx, xfs@xxxxxxxxxxx
Subject: TAKE 981668 - Wait for all I/O on truncate to zero file size
From: lachlan@xxxxxxx (Lachlan McIlroy)
Date: Fri, 26 Sep 2008 14:42:26 +1000 (EST)
Wait for all I/O on truncate to zero file size

It's possible to have outstanding xfs_ioend_t's queued when the file
size is zero.  This can happen in the direct I/O path when a direct
I/O write fails due to ENOSPC.  In this case the xfs_ioend_t will still
be queued (ie xfs_end_io_direct() does not know that the I/O failed so
can't force the xfs_ioend_t to be flushed synchronously).

When we truncate a file on unlink we don't know to wait for these
xfs_ioend_ts and we can have a use-after-free situation if the inode
is reclaimed before the xfs_ioend_t is finally processed.

As was suggested by Dave Chinner lets wait for all I/Os to complete
when truncating the file size to zero.

Date:  Fri Sep 26 14:41:42 AEST 2008
Workarea:  redback.melbourne.sgi.com:/home/lachlan/isms/2.6.x-tot
Inspected by:  hch
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:32216a
fs/xfs/xfs_inode.c - 1.524 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_inode.c.diff?r1=text&tr1=1.524&r2=text&tr2=1.523&f=h
        - Wait for all I/O on truncate to zero file size



<Prev in Thread] Current Thread [Next in Thread>
  • TAKE 981668 - Wait for all I/O on truncate to zero file size, Lachlan McIlroy <=