Re: [PATCH 2/5] xfs: add flush flag to xfs_eofblocks

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

 



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




[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux