| To: | Christoph Hellwig <hch@xxxxxxxxxxxxx> |
|---|---|
| Subject: | Re: [PATCH v2] xfs: Fix wrong return value of xfs_file_aio_write |
| From: | Markus Trippelsdorf <markus@xxxxxxxxxxxxxxx> |
| Date: | Sun, 24 Jul 2011 13:58:26 +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=uaFPWxZXelWEMYe9 zVguuBXpKyM0jVTBSz8JFonzlwo=; b=UgMYeQVnHkChfWoWE/XgsjkmTHJu/Af8 mgPKw6Wha+MASFBJRab0jaH8wOHr3fgI6n84cN3mOkSZ5jjFvGjAaOH0cWoouOJM xzdBLqA2gpCxs3spWEUCWue0y+XvcwG1Im8mmozlKO8/wW1SYYOyTb10DWQBqXQ4 /qBIqYCCfV0= |
| In-reply-to: | <20110724115420.GA1626@xxxxxxxxxxxxxx> |
| References: | <1309370716-12235-1-git-send-email-josef@xxxxxxxxxx> <20110723180942.GA1616@xxxxxxxxxxxxxx> <4E2B2E88.8080006@xxxxxxxxxx> <20110723203824.GB1652@xxxxxxxxxxxxxx> <20110723220212.GA1648@xxxxxxxxxxxxxx> <20110724111625.GA12658@xxxxxxxxxxxxx> <20110724115420.GA1626@xxxxxxxxxxxxxx> |
(This time with with a proper signoff.)
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.
Signed-off-by: Markus Trippelsdorf <markus@xxxxxxxxxxxxxxx>
---
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: | Re: [PATCH] xfs: Fix wrong return value of xfs_file_aio_write, Christoph Hellwig |
|---|---|
| Next by Date: | [PATCH] xfs: Fix wrong return value of xfs_file_aio_write, Markus Trippelsdorf |
| Previous by Thread: | Re: [PATCH] xfs: Fix wrong return value of xfs_file_aio_write, Christoph Hellwig |
| Next by Thread: | [PATCH] xfs: Fix wrong return value of xfs_file_aio_write, Markus Trippelsdorf |
| Indexes: | [Date] [Thread] [Top] [All Lists] |