diff mbox series

[PATCHv3,8/8] zram: correct typos

Message ID 20221009090720.1040633-9-senozhatsky@chromium.org (mailing list archive)
State New
Headers show
Series zram: Support multiple compression streams | expand

Commit Message

Sergey Senozhatsky Oct. 9, 2022, 9:07 a.m. UTC
Trivial comment typos fixes.

Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
---
 drivers/block/zram/zram_drv.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Andrew Morton Oct. 18, 2022, 12:08 a.m. UTC | #1
On Sun,  9 Oct 2022 18:07:20 +0900 Sergey Senozhatsky <senozhatsky@chromium.org> wrote:

> Trivial comment typos fixes.
> 
> --- a/drivers/block/zram/zram_drv.c
> +++ b/drivers/block/zram/zram_drv.c
> @@ -759,7 +759,7 @@ static ssize_t writeback_store(struct device *dev,
>  			zram_slot_unlock(zram, index);
>  			/*
>  			 * Return last IO error unless every IO were
> -			 * not suceeded.
> +			 * not succeeded.

That's a pretty awkward sentence.  Why not "unless every IO failed".

If that's indeed what we're doing here.  Sounds odd.  What do we return
if all IOs indeed failed?
Sergey Senozhatsky Oct. 18, 2022, 2:10 a.m. UTC | #2
On (22/10/17 17:08), Andrew Morton wrote:
> On Sun,  9 Oct 2022 18:07:20 +0900 Sergey Senozhatsky <senozhatsky@chromium.org> wrote:
> 
> > Trivial comment typos fixes.
> > 
> > --- a/drivers/block/zram/zram_drv.c
> > +++ b/drivers/block/zram/zram_drv.c
> > @@ -759,7 +759,7 @@ static ssize_t writeback_store(struct device *dev,
> >  			zram_slot_unlock(zram, index);
> >  			/*
> >  			 * Return last IO error unless every IO were
> > -			 * not suceeded.
> > +			 * not succeeded.
> 
> That's a pretty awkward sentence.  Why not "unless every IO failed".
> 
> If that's indeed what we're doing here.  Sounds odd.  What do we return
> if all IOs indeed failed?

Hmm, yes, I didn't consider re-phrasing this comment but we probably
should do so. What we have there is

	while (nr_pages_to_write--) {
		err = submit_bio_wait();
		if (err) {
			ret = err;
			continue;
		}
	}
	return ret;

zram objects are independent and bio errors on individual writes are
non-fatal, if we failed to write-back a zram object (page) we just
continue and try to write the next one; at the same time we need to
signal user-space that some of those writes failed (doesn't matter
which ones or how many). That loop used to look as follows (as far
as I can tell):

	while (nr_pages_to_write--) {
		ret = submit_bio_wait();
	}
	return ret;

Notice how `ret' would get overwritten all the time, so we if we had,
say, a successful submit_bio_wait, then an unsuccessful one and a
successful one again, we would lose the track of the bio error that
happened on the second iteration and will always return 0 to user-space.
*Unless* the last (or all) submit_bio_wait() also failed, in which case
`ret' would hold the correct error code.

Will something like this look less awkward to you?

---

diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index ecbc5963b5b8..23f1655b7837 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -758,8 +758,12 @@ static ssize_t writeback_store(struct device *dev,
 			zram_clear_flag(zram, index, ZRAM_IDLE);
 			zram_slot_unlock(zram, index);
 			/*
-			 * Return last IO error unless every IO were
-			 * not succeeded.
+			 * BIO errors are not fatal, we continue and simply
+			 * attempt to writeback the remaining objects (pages).
+			 * At the same time we need to signal user-space that
+			 * some writes (at least one, but also could be all of
+			 * them) were not successful and we do so by returning
+			 * the most recent BIO error.
 			 */
 			ret = err;
 			continue;
diff mbox series

Patch

diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 34bb21691cee..ecbc5963b5b8 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -759,7 +759,7 @@  static ssize_t writeback_store(struct device *dev,
 			zram_slot_unlock(zram, index);
 			/*
 			 * Return last IO error unless every IO were
-			 * not suceeded.
+			 * not succeeded.
 			 */
 			ret = err;
 			continue;
@@ -1658,7 +1658,7 @@  static int zram_recompress(struct zram *zram, u32 index, struct page *page,
 	/*
 	 * Either a compression error or we failed to compressed the object
 	 * in a way that will save us memory. Mark the object so that we
-	 * don't attemp to re-compress it again (RECOMP_SKIP).
+	 * don't attempt to re-compress it again (RECOMP_SKIP).
 	 */
 	if (comp_len_next >= huge_class_size ||
 	    comp_len_next >= comp_len_prev ||