| To: | Christoph Hellwig <hch@xxxxxxxxxxxxx> |
|---|---|
| Subject: | [PATCH] xfs: Fix wrong return value of xfs_file_aio_write |
| From: | Markus Trippelsdorf <markus@xxxxxxxxxxxxxxx> |
| Date: | Sun, 24 Jul 2011 13:54:20 +0200 |
| Cc: | Josef Bacik <josef@xxxxxxxxxx>, linux-fsdevel@xxxxxxxxxxxxxxx, viro@xxxxxxxxxxxxxxxxxx, jack@xxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, Dave Chinner <david@xxxxxxxxxxxxx>, xfs@xxxxxxxxxxx |
| Dkim-signature: | v=1; a=rsa-sha256; c=simple; d=mail.ud10.udmedia.de; h= date:from:to:cc:subject:message-id:references:mime-version: content-type:in-reply-to; q=dns/txt; s=beta; bh=8xn5nN+qIntlVPAA wBfPVHCjpnVWGHG2Kmvu2rIXn0c=; b=Y9QdvmunIbhrLn6PEePRI9A8Y0GD9JmD PdYApzNpUpbdymZuwC6W4qw5QQjRCnyI8cwo5WDRh/hVVRrObCljZ6IuGnZueiGG gd7TdDirZytsokIaYDtaJctFl9jkaRmJXrQybNetbce0smG1dzcrP3iK4VCY8Ipz qamghYKTcjI= |
| In-reply-to: | <20110724111625.GA12658@xxxxxxxxxxxxx> |
| References: | <1309370716-12235-1-git-send-email-josef@xxxxxxxxxx> <20110723180942.GA1616@xxxxxxxxxxxxxx> <4E2B2E88.8080006@xxxxxxxxxx> <20110723203824.GB1652@xxxxxxxxxxxxxx> <20110723220212.GA1648@xxxxxxxxxxxxxx> <20110724111625.GA12658@xxxxxxxxxxxxx> |
On 2011.07.24 at 07:16 -0400, Christoph Hellwig wrote:
> On Sun, Jul 24, 2011 at 12:02:12AM +0200, Markus Trippelsdorf wrote:
> > The following patch fixes the problem for me:
>
> Good catch, can you send it with a proper signoff and description?
The fsync prototype change commit 02c24a82187d accidentally overwrote
the ssize_t return value of xfs_file_aio_write with 0 for SYNC type
writes. Fix this by checking if an error occured when calling
xfs_file_fsync and only change the return value in this case.
In addition xfs_file_fsync actually returns a normal negative error, so
fix this, too.
---
fs/xfs/linux-2.6/xfs_file.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c
index cca00f4..825390e 100644
--- a/fs/xfs/linux-2.6/xfs_file.c
+++ b/fs/xfs/linux-2.6/xfs_file.c
@@ -881,11 +881,14 @@ xfs_file_aio_write(
/* Handle various SYNC-type writes */
if ((file->f_flags & O_DSYNC) || IS_SYNC(inode)) {
loff_t end = pos + ret - 1;
+ int error;
xfs_rw_iunlock(ip, iolock);
- ret = -xfs_file_fsync(file, pos, end,
+ error = xfs_file_fsync(file, pos, end,
(file->f_flags & __O_SYNC) ? 0 : 1);
xfs_rw_ilock(ip, iolock);
+ if (error)
+ ret = error;
}
out_unlock:
--
Markus
|
| Previous by Date: | [PATCH] xfs: Fix wrong return value of xfs_file_aio_write, Markus Trippelsdorf |
|---|---|
| Next by Date: | Re: [PATCH] xfs: Fix wrong return value of xfs_file_aio_write, Christoph Hellwig |
| Previous by Thread: | Re: [PATCH] fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers, Christoph Hellwig |
| Next by Thread: | Re: [PATCH] xfs: Fix wrong return value of xfs_file_aio_write, Christoph Hellwig |
| Indexes: | [Date] [Thread] [Top] [All Lists] |