linux/drivers/block/drbd
Benjamin Coddington 98123866fc Treewide: Stop corrupting socket's task_frag
Since moving to memalloc_nofs_save/restore, SUNRPC has stopped setting the
GFP_NOIO flag on sk_allocation which the networking system uses to decide
when it is safe to use current->task_frag.  The results of this are
unexpected corruption in task_frag when SUNRPC is involved in memory
reclaim.

The corruption can be seen in crashes, but the root cause is often
difficult to ascertain as a crashing machine's stack trace will have no
evidence of being near NFS or SUNRPC code.  I believe this problem to
be much more pervasive than reports to the community may indicate.

Fix this by having kernel users of sockets that may corrupt task_frag due
to reclaim set sk_use_task_frag = false.  Preemptively correcting this
situation for users that still set sk_allocation allows them to convert to
memalloc_nofs_save/restore without the same unexpected corruptions that are
sure to follow, unlikely to show up in testing, and difficult to bisect.

CC: Philipp Reisner <philipp.reisner@linbit.com>
CC: Lars Ellenberg <lars.ellenberg@linbit.com>
CC: "Christoph Böhmwalder" <christoph.boehmwalder@linbit.com>
CC: Jens Axboe <axboe@kernel.dk>
CC: Josef Bacik <josef@toxicpanda.com>
CC: Keith Busch <kbusch@kernel.org>
CC: Christoph Hellwig <hch@lst.de>
CC: Sagi Grimberg <sagi@grimberg.me>
CC: Lee Duncan <lduncan@suse.com>
CC: Chris Leech <cleech@redhat.com>
CC: Mike Christie <michael.christie@oracle.com>
CC: "James E.J. Bottomley" <jejb@linux.ibm.com>
CC: "Martin K. Petersen" <martin.petersen@oracle.com>
CC: Valentina Manea <valentina.manea.m@gmail.com>
CC: Shuah Khan <shuah@kernel.org>
CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
CC: David Howells <dhowells@redhat.com>
CC: Marc Dionne <marc.dionne@auristor.com>
CC: Steve French <sfrench@samba.org>
CC: Christine Caulfield <ccaulfie@redhat.com>
CC: David Teigland <teigland@redhat.com>
CC: Mark Fasheh <mark@fasheh.com>
CC: Joel Becker <jlbec@evilplan.org>
CC: Joseph Qi <joseph.qi@linux.alibaba.com>
CC: Eric Van Hensbergen <ericvh@gmail.com>
CC: Latchesar Ionkov <lucho@ionkov.net>
CC: Dominique Martinet <asmadeus@codewreck.org>
CC: Ilya Dryomov <idryomov@gmail.com>
CC: Xiubo Li <xiubli@redhat.com>
CC: Chuck Lever <chuck.lever@oracle.com>
CC: Jeff Layton <jlayton@kernel.org>
CC: Trond Myklebust <trond.myklebust@hammerspace.com>
CC: Anna Schumaker <anna@kernel.org>
CC: Steffen Klassert <steffen.klassert@secunet.com>
CC: Herbert Xu <herbert@gondor.apana.org.au>

Suggested-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Reviewed-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2022-12-19 17:28:49 -08:00
..
drbd_actlog.c drbd: add context parameter to expect() macro 2022-12-01 11:33:49 -07:00
drbd_bitmap.c drbd: add context parameter to expect() macro 2022-12-01 11:33:49 -07:00
drbd_debugfs.c drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_debugfs.h drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_int.h drbd: introduce drbd_ratelimit() 2022-12-01 11:33:49 -07:00
drbd_interval.c drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_interval.h drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_main.c for-6.2/block-2022-12-08 2022-12-13 10:43:59 -08:00
drbd_nl.c drbd: add context parameter to expect() macro 2022-12-01 11:33:49 -07:00
drbd_nla.c drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_nla.h drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_polymorph_printk.h drbd: add context parameter to expect() macro 2022-12-01 11:33:49 -07:00
drbd_proc.c drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_protocol.h drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_receiver.c Treewide: Stop corrupting socket's task_frag 2022-12-19 17:28:49 -08:00
drbd_req.c drbd: introduce drbd_ratelimit() 2022-12-01 11:33:49 -07:00
drbd_req.h drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_state_change.h drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_state.c drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_state.h drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_strings.c drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_strings.h drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_vli.h drbd: use consistent license 2022-11-22 19:38:39 -07:00
drbd_worker.c drbd: introduce drbd_ratelimit() 2022-12-01 11:33:49 -07:00
Kconfig drbd: use consistent license 2022-11-22 19:38:39 -07:00
Makefile drbd: use consistent license 2022-11-22 19:38:39 -07:00