linux/drivers/block
Jiri Slaby 37887783b3 Revert "zram: remove double compression logic"
This reverts commit e7be8d1dd9 ("zram: remove double compression
logic") as it causes zram failures.  It does not revert cleanly, PTR_ERR
handling was introduced in the meantime.  This is handled by appropriate
IS_ERR.

When under memory pressure, zs_malloc() can fail.  Before the above
commit, the allocation was retried with direct reclaim enabled (GFP_NOIO).
After the commit, it is not -- only __GFP_KSWAPD_RECLAIM is tried.

So when the failure occurs under memory pressure, the overlaying
filesystem such as ext2 (mounted by ext4 module in this case) can emit
failures, making the (file)system unusable:
  EXT4-fs warning (device zram0): ext4_end_bio:343: I/O error 10 writing to inode 16386 starting block 159744)
  Buffer I/O error on device zram0, logical block 159744

With direct reclaim, memory is really reclaimed and allocation succeeds,
eventually.  In the worst case, the oom killer is invoked, which is proper
outcome if user sets up zram too large (in comparison to available RAM).

This very diff doesn't apply to 5.19 (stable) cleanly (see PTR_ERR note
above). Use revert of e7be8d1dd9 directly.

Link: https://bugzilla.suse.com/show_bug.cgi?id=1202203
Link: https://lkml.kernel.org/r/20220810070609.14402-1-jslaby@suse.cz
Fixes: e7be8d1dd9 ("zram: remove double compression logic")
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Cc: Alexey Romanov <avromanov@sberdevices.ru>
Cc: Dmitry Rokosov <ddrokosov@sberdevices.ru>
Cc: Lukas Czerner <lczerner@redhat.com>
Cc: <stable@vger.kernel.org>	[5.19]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2022-08-20 15:17:44 -07:00
..
aoe block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
drbd block: change the blk_queue_split calling convention 2022-08-02 17:22:53 -06:00
mtip32xx blk-mq: Drop 'reserved' arg of busy_tag_iter_fn 2022-07-06 06:33:53 -06:00
null_blk null_blk: fix ida error handling in null_add_dev() 2022-08-02 17:22:41 -06:00
paride block: Change the type of req_op() and bio_op() into enum req_op 2022-07-14 12:14:30 -06:00
rnbd block/rnbd-srv: Replace sess_dev_list with index_idr 2022-08-02 17:14:50 -06:00
xen-blkback xen: branch for v6.0-rc1b 2022-08-14 09:28:54 -07:00
zram Revert "zram: remove double compression logic" 2022-08-20 15:17:44 -07:00
amiflop.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
ataflop.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
brd.c block/brd: Use the enum req_op type 2022-07-14 12:14:31 -06:00
floppy.c block/floppy: Fix a sparse warning 2022-07-14 12:14:31 -06:00
Kconfig remove the sx8 block driver 2022-08-02 17:22:46 -06:00
loop.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
Makefile remove the sx8 block driver 2022-08-02 17:22:46 -06:00
n64cart.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
nbd.c nbd: add missing definition of pr_fmt 2022-08-02 17:22:41 -06:00
pktcdvd.c block: change the blk_queue_split calling convention 2022-08-02 17:22:53 -06:00
ps3disk.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
ps3vram.c block: change the blk_queue_split calling convention 2022-08-02 17:22:53 -06:00
rbd_types.h libceph, rbd: replace zero-length array with flexible-array 2020-06-01 13:22:53 +02:00
rbd.c We have a good pile of various fixes and cleanups from Xiubo, Jeff, 2022-08-11 12:41:07 -07:00
sunvdc.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
swim3.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
swim_asm.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
swim.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
ublk_drv.c ublk_drv: add support for UBLK_IO_NEED_GET_DATA 2022-08-02 21:13:40 -06:00
virtio_blk.c virtio: fatures, fixes 2022-08-12 09:50:34 -07:00
xen-blkfront.c xen: branch for v6.0-rc1b 2022-08-14 09:28:54 -07:00
z2ram.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00