xfs
[Top] [All Lists]

Re: [PATCH 2/3] xfs: don't use ioends for direct write completions

To: "Darrick J. Wong" <darrick.wong@xxxxxxxxxx>
Subject: Re: [PATCH 2/3] xfs: don't use ioends for direct write completions
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Sat, 6 Feb 2016 09:36:26 +1100
Cc: Christoph Hellwig <hch@xxxxxx>, linux-fsdevel@xxxxxxxxxxxxxxx, xfs@xxxxxxxxxxx, linux-ext4@xxxxxxxxxxxxxxx, ocfs2-devel@xxxxxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20160205215718.GM20038@xxxxxxxxxxxxxxxx>
References: <1454524816-11392-1-git-send-email-hch@xxxxxx> <1454524816-11392-3-git-send-email-hch@xxxxxx> <20160205215718.GM20038@xxxxxxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Fri, Feb 05, 2016 at 01:57:18PM -0800, Darrick J. Wong wrote:
> On Wed, Feb 03, 2016 at 07:40:15PM +0100, Christoph Hellwig wrote:
> > -   struct kiocb            *iocb,
> > -   loff_t                  offset,
> > -   ssize_t                 size,
> > -   void                    *private)
> > -{
> > -   struct inode            *inode = file_inode(iocb->ki_filp);
> > -   struct xfs_ioend        *ioend = private;
> > +           trace_xfs_end_io_direct_write_append(ip, offset, size);
> >  
> > -   if (size <= 0)
> > -           return 0;
> > -
> > -   trace_xfs_gbmap_direct_endio(XFS_I(inode), offset, size,
> > -                                ioend ? ioend->io_type : 0, NULL);
> > -
> > -   if (!ioend) {
> > -           ASSERT(offset + size <= i_size_read(inode));
> > -           return 0;
> > +           tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS);
> > +           error = xfs_trans_reserve(tp, &M_RES(mp)->tr_fsyncts, 0, 0);
> > +           if (error) {
> > +                   xfs_trans_cancel(tp);
> > +                   return error;
> > +           }
> > +           error = xfs_setfilesize(ip, tp, offset, size);
> 
> Don't we need a xfs_trans_commit() here?

No, xfs_setfilesize() does that.

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>