summaryrefslogtreecommitdiffstats
path: root/fs/gfs2/file.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2022-05-24 19:00:41 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2022-05-24 19:00:41 -0700
commit7208c9842c50f97327aac20be62edc8ad230f05c (patch)
tree9c27e7948d0897c312a040e956eb872a9c0a6a65 /fs/gfs2/file.c
parentbd1b7c1384ec15294ee45bf3add7b7036e146dad (diff)
parentc360abbb9db298d0548b31e1a86a48ebb157d7cd (diff)
downloadlinux-stable-7208c9842c50f97327aac20be62edc8ad230f05c.tar.gz
linux-stable-7208c9842c50f97327aac20be62edc8ad230f05c.tar.bz2
linux-stable-7208c9842c50f97327aac20be62edc8ad230f05c.zip
Merge tag 'gfs2-v5.18-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2
Pull gfs2 updates from Andreas Gruenbacher: - Clean up the allocation of glocks that have an address space attached - Quota locking fix and quota iomap conversion - Fix the FITRIM error reporting - Some list iterator cleanups * tag 'gfs2-v5.18-rc6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2: gfs2: Convert function bh_get to use iomap gfs2: use i_lock spin_lock for inode qadata gfs2: Return more useful errors from gfs2_rgrp_send_discards() gfs2: Use container_of() for gfs2_glock(aspace) gfs2: Explain some direct I/O oddities gfs2: replace 'found' with dedicated list iterator variable
Diffstat (limited to 'fs/gfs2/file.c')
-rw-r--r--fs/gfs2/file.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
index 0b07d5a7bb81..2cceb193dcd8 100644
--- a/fs/gfs2/file.c
+++ b/fs/gfs2/file.c
@@ -840,6 +840,7 @@ retry:
pagefault_enable();
if (ret <= 0 && ret != -EFAULT)
goto out_unlock;
+ /* No increment (+=) because iomap_dio_rw returns a cumulative value. */
if (ret > 0)
read = ret;
@@ -854,6 +855,7 @@ out_unlock:
gfs2_glock_dq(gh);
out_uninit:
gfs2_holder_uninit(gh);
+ /* User space doesn't expect partial success. */
if (ret < 0)
return ret;
return read;
@@ -906,6 +908,7 @@ retry:
if (ret != -EFAULT)
goto out_unlock;
}
+ /* No increment (+=) because iomap_dio_rw returns a cumulative value. */
if (ret > 0)
written = ret;
@@ -920,6 +923,7 @@ out_unlock:
gfs2_glock_dq(gh);
out_uninit:
gfs2_holder_uninit(gh);
+ /* User space doesn't expect partial success. */
if (ret < 0)
return ret;
return written;