On Tue, Apr 01, 2014 at 08:47:54AM +1100, Dave Chinner wrote: > On Fri, Mar 28, 2014 at 09:16:00AM -0400, Brian Foster wrote: > > The flush flag allows the caller to issue a flush for scanned inodes. In > > ENOSPC conditions caused by project quotas, a flush is required to free > > up reserved metadata allocations. > > > > Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx> > > --- > > fs/xfs/xfs_fs.h | 4 +++- > > fs/xfs/xfs_icache.c | 3 +++ > > 2 files changed, 6 insertions(+), 1 deletion(-) > > > > diff --git a/fs/xfs/xfs_fs.h b/fs/xfs/xfs_fs.h > > index c5fc116..fa3a58e 100644 > > --- a/fs/xfs/xfs_fs.h > > +++ b/fs/xfs/xfs_fs.h > > @@ -374,12 +374,14 @@ struct xfs_fs_eofblocks { > > #define XFS_EOF_FLAGS_GID (1 << 2) /* filter by gid */ > > #define XFS_EOF_FLAGS_PRID (1 << 3) /* filter by project id */ > > #define XFS_EOF_FLAGS_MINFILESIZE (1 << 4) /* filter by min file size */ > > +#define XFS_EOF_FLAGS_FLUSH (1 << 5) /* issue a flush */ > > #define XFS_EOF_FLAGS_VALID \ > > (XFS_EOF_FLAGS_SYNC | \ > > XFS_EOF_FLAGS_UID | \ > > XFS_EOF_FLAGS_GID | \ > > XFS_EOF_FLAGS_PRID | \ > > - XFS_EOF_FLAGS_MINFILESIZE) > > + XFS_EOF_FLAGS_MINFILESIZE | \ > > + XFS_EOF_FLAGS_FLUSH) > > > > > > /* > > diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c > > index 7ff59c9..d4e15db 100644 > > --- a/fs/xfs/xfs_icache.c > > +++ b/fs/xfs/xfs_icache.c > > @@ -1231,6 +1231,9 @@ xfs_inode_free_eofblocks( > > if (eofb->eof_flags & XFS_EOF_FLAGS_MINFILESIZE && > > XFS_ISIZE(ip) < eofb->eof_min_file_size) > > return 0; > > + > > + if (eofb->eof_flags & XFS_EOF_FLAGS_FLUSH) > > + filemap_flush(VFS_I(ip)->i_mapping); > > So this does WB_SYNC_NONE writeback, which means the filesystem is > free to ignore it when we get to .writepage. Given that we are are > ENOSPC here, wouldn't it be better to guarantee that writeback will > occur (i.e. use filemap_fdatawrite())? > Yeah, I didn't catch that. That makes sense, thanks. Brian > Cheers, > > Dave. > -- > Dave Chinner > david@xxxxxxxxxxxxx _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs