Module Name: src Committed By: jdolecek Date: Tue Apr 14 09:27:28 UTC 2020
Modified Files: src/sys/arch/xen/xen: xbd_xenbus.c Log Message: provide d_iosize hook to cap the xfer size used for dumps To generate a diff of this commit: cvs rdiff -u -r1.108 -r1.109 src/sys/arch/xen/xen/xbd_xenbus.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/xen/xen/xbd_xenbus.c diff -u src/sys/arch/xen/xen/xbd_xenbus.c:1.108 src/sys/arch/xen/xen/xbd_xenbus.c:1.109 --- src/sys/arch/xen/xen/xbd_xenbus.c:1.108 Tue Apr 14 08:21:59 2020 +++ src/sys/arch/xen/xen/xbd_xenbus.c Tue Apr 14 09:27:28 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: xbd_xenbus.c,v 1.108 2020/04/14 08:21:59 jdolecek Exp $ */ +/* $NetBSD: xbd_xenbus.c,v 1.109 2020/04/14 09:27:28 jdolecek Exp $ */ /* * Copyright (c) 2006 Manuel Bouyer. @@ -50,7 +50,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xbd_xenbus.c,v 1.108 2020/04/14 08:21:59 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xbd_xenbus.c,v 1.109 2020/04/14 09:27:28 jdolecek Exp $"); #include "opt_xen.h" @@ -176,6 +176,7 @@ static bool xbd_xenbus_resume(device_t, static int xbd_handler(void *); static int xbd_diskstart(device_t, struct buf *); +static void xbd_iosize(device_t, int *); static void xbd_backend_changed(void *, XenbusState); static void xbd_connect(struct xbd_xenbus_softc *); @@ -231,6 +232,7 @@ static struct dkdriver xbddkdriver = { .d_open = xbdopen, .d_close = xbdclose, .d_diskstart = xbd_diskstart, + .d_iosize = xbd_iosize, }; static int @@ -775,6 +777,17 @@ xbdminphys(struct buf *bp) minphys(bp); } +static void +xbd_iosize(device_t dev, int *maxxfer) +{ + /* + * Always restrict dumps to XBD_MAX_XFER to avoid indirect segments, + * so that it uses as little memory as possible. + */ + if (*maxxfer > XBD_MAX_XFER) + *maxxfer = XBD_MAX_XFER; +} + int xbdopen(dev_t dev, int flags, int fmt, struct lwp *l) {