From: Dave Chinner <david@fromorbit.com>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [git pull] vfs.git fixes for -rc2
Date: Mon, 10 Feb 2014 21:47:47 +1100 [thread overview]
Message-ID: <20140210104747.GV13997@dastard> (raw)
In-Reply-To: <20140209233643.GB18016@ZenIV.linux.org.uk>
On Sun, Feb 09, 2014 at 11:36:43PM +0000, Al Viro wrote:
> A couple of fixes, both -stable fodder. O_SYNC bug is
> fairly old... Please, pull from the usual place -
> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-linus
>
> Shortlog:
> Al Viro (2):
> fix O_SYNC|O_APPEND syncing the wrong range on write()
As i pointed out in a private thread this doesn't fix XFS. It passes
a private "pos" variable to generic_write_checks() and so
iocb->ki_pos never gets updated to point at the new EOF when
O_APPEND is set. Hence the code inthe above commit is still syncing
the wrong range.
Indeed, I think that __generic_file_aio_write has the same problem.
It gets called from generic_file_aio_write() like so:
ret = __generic_file_aio_write(iocb, iov, nr_segs, &iocb->ki_pos);
And __generic_file_aio_write() does this:
pos = *ppos;
....
err = generic_write_checks(file, &pos, &count, S_ISBLK(inode->i_mode));
and the updated pos value on O_APPEND writes is never folded back
into ppos. Hence the later call to generic_write_sync() still has
the wrong range....
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
next prev parent reply other threads:[~2014-02-10 10:47 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-09 23:36 [git pull] vfs.git fixes for -rc2 Al Viro
2014-02-10 10:47 ` Dave Chinner [this message]
2014-02-10 10:52 ` Christoph Hellwig
2014-02-10 11:16 ` Geert Uytterhoeven
2014-02-10 11:17 ` Dave Chinner
2014-02-10 11:17 ` Al Viro
-- strict thread matches above, loose matches on Subject: below --
2015-07-12 16:16 Al Viro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140210104747.GV13997@dastard \
--to=david@fromorbit.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=viro@ZenIV.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).