linux/drivers/usb/gadget
Mel Gorman 0614002bb5 netvm: propagate page->pfmemalloc from skb_alloc_page to skb
The skb->pfmemalloc flag gets set to true iff during the slab allocation
of data in __alloc_skb that the the PFMEMALLOC reserves were used.  If
page splitting is used, it is possible that pages will be allocated from
the PFMEMALLOC reserve without propagating this information to the skb.
This patch propagates page->pfmemalloc from pages allocated for fragments
to the skb.

It works by reintroducing and expanding the skb_alloc_page() API to take
an skb.  If the page was allocated from pfmemalloc reserves, it is
automatically copied.  If the driver allocates the page before the skb, it
should call skb_propagate_pfmemalloc() after the skb is allocated to
ensure the flag is copied properly.

Failure to do so is not critical.  The resulting driver may perform slower
if it is used for swap-over-NBD or swap-over-NFS but it should not result
in failure.

[davem@davemloft.net: API rename and consistency]
Signed-off-by: Mel Gorman <mgorman@suse.de>
Acked-by: David S. Miller <davem@davemloft.net>
Cc: Neil Brown <neilb@suse.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Christie <michaelc@cs.wisc.edu>
Cc: Eric B Munson <emunson@mgebm.net>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Christoph Lameter <cl@linux.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-31 18:42:46 -07:00
..
acm_ms.c usb: gadget: acm_ms: need to set max_speed 2012-06-22 13:10:10 +03:00
amd5536udc.c usb: gadget: Update amd5536udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:52 +03:00
amd5536udc.h usb: gadget: Update amd5536udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:52 +03:00
at91_udc.c usb: gadget: at91_udc: Propagate devicetree to gadget drivers 2012-07-02 10:38:07 +03:00
at91_udc.h usb: gadget: Update at91_udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:53 +03:00
atmel_usba_udc.c usb: gadget: atmel_usba_udc: Remove unneeded condition 2012-06-04 18:15:44 +03:00
atmel_usba_udc.h usb: gadget: Update atmel_usba_udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:53 +03:00
audio.c usb: gadget: Add Audio Class 2.0 Driver 2012-02-15 10:10:31 +02:00
cdc2.c usb: Add module.h to drivers/usb consumers who really use it. 2011-10-31 19:31:25 -04:00
composite.c usb: gadget: composite: fix ep->maxburst initialization 2012-06-12 13:30:25 +03:00
config.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
dbgp.c usb: gadget: rename usb_gadget_driver::speed to max_speed 2011-12-12 11:45:12 +02:00
dummy_hcd.c usb: gadget: dummy_hcd: fix build when BUG is not set 2012-05-11 15:17:31 -07:00
epautoconf.c This merge is rather big. Here's what it contains: 2012-03-01 09:20:28 -08:00
ether.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
f_acm.c usb: gadget: add usb3.0 descriptors to serial gadgets 2012-02-09 10:11:36 +02:00
f_ecm.c usb: gadget: Add Interface Association Descriptor to ECM 2012-01-30 11:17:26 +02:00
f_eem.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
f_fs.c usb: gadget: ffs: add HID descriptor support. 2012-06-04 18:11:59 +03:00
f_hid.c usb: gadget: hidg: register OUT INT endpoint for SET_REPORT 2012-06-15 14:34:53 +03:00
f_loopback.c usb: gadget: add isochronous support to gadget zero 2012-05-04 15:53:08 +03:00
f_mass_storage.c usb: gadget: mass_storage: make "file" and "ro" read only in some cases 2012-07-02 10:36:55 +03:00
f_midi.c Allocate correct size (portably) in drivers/usb/gadget/f_midi.c::f_midi_bind() 2012-03-02 16:22:11 -08:00
f_ncm.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
f_obex.c usb: Add module.h to drivers/usb consumers who really use it. 2011-10-31 19:31:25 -04:00
f_phonet.c netvm: propagate page->pfmemalloc from skb_alloc_page to skb 2012-07-31 18:42:46 -07:00
f_rndis.c USB 3.5-rc1 pull request 2012-05-22 15:50:46 -07:00
f_serial.c usb: gadget: add usb3.0 descriptors to serial gadgets 2012-02-09 10:11:36 +02:00
f_sourcesink.c usb: gadget: add isochronous support to gadget zero 2012-05-04 15:53:08 +03:00
f_subset.c usb gadget: fix a section mismatch when compiling g_ffs with CONFIG_USB_FUNCTIONFS_ETH 2012-03-13 14:29:33 -07:00
f_uac1.c usb: gadget: audio: Move string IDs to audio.c 2012-02-15 10:10:25 +02:00
f_uac2.c usb: gadget: Add Audio Class 2.0 Driver 2012-02-15 10:10:31 +02:00
f_uvc.c usb: gadget: uvc: Add super-speed support to UVC webcam gadget 2012-06-04 18:12:36 +03:00
f_uvc.h usb: gadget: uvc: Add super-speed support to UVC webcam gadget 2012-06-04 18:12:36 +03:00
file_storage.c USB: gadget: storage gadgets send wrong error code for unknown commands 2012-04-12 16:20:10 +03:00
fsl_mxc_udc.c usb: gadget: fsl_mxc_udc: do not depend on grouped clocks 2012-06-22 13:09:52 +03:00
fsl_qe_udc.c usb: gadget: fsl_qe_udc: Remove unneeded condition 2012-06-04 18:15:45 +03:00
fsl_qe_udc.h usb: gadget: Complete fsl qe/udc driver conversion 2012-06-12 13:32:29 +03:00
fsl_udc_core.c usb: phy: patches for v3.6 merge window 2012-07-05 15:35:41 -07:00
fsl_usb2_udc.h usb: gadget: regression fix - usage of usb_ep 2012-06-04 18:24:49 +03:00
fusb300_udc.c usb: gadget: Update fusb300_udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:55 +03:00
fusb300_udc.h usb: gadget: Update fusb300_udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:55 +03:00
g_ffs.c FunctionFS: enable multiple functions 2012-05-14 09:25:44 -07:00
g_zero.h usb: gadget: add isochronous support to gadget zero 2012-05-04 15:53:08 +03:00
gadget_chips.h USB: gadget driver for LPC32xx 2012-05-01 13:34:55 -04:00
gmidi.c usb: Add module.h to drivers/usb consumers who really use it. 2011-10-31 19:31:25 -04:00
goku_udc.c usb: gadget: goku_udc: Remove unneeded condition 2012-06-04 18:15:46 +03:00
goku_udc.h usb: gadget: Update goku_udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:55 +03:00
hid.c USB: gadget: Make g_hid device class conform to spec. 2012-03-08 13:11:34 -08:00
imx_udc.c usb: imx_udc.c: Use clk_prepare_enable/clk_disable_unprepare 2012-06-12 13:30:59 +03:00
imx_udc.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
inode.c USB: remove compile warning on gadget/inode.c 2012-04-06 13:54:01 -07:00
Kconfig USB patches for 3.6-rc1 2012-07-26 10:23:47 -07:00
lpc32xx_udc.c usb: gadget: patches for v3.6 merge window 2012-07-05 15:10:09 -07:00
m66592-udc.c gadget/m66592: remove conditional compilation of clk code 2012-07-30 17:25:12 -07:00
m66592-udc.h gadget/m66592: remove conditional compilation of clk code 2012-07-30 17:25:12 -07:00
Makefile usb: gadget: mv: Add USB 3.0 device driver for Marvell PXA2128 chip. 2012-06-22 13:08:21 +03:00
mass_storage.c usb: gadget: update Michal Nazarewicz's email address 2012-01-24 11:45:11 +02:00
multi.c usb: gadget: update Michal Nazarewicz's email address 2012-01-24 11:45:11 +02:00
mv_u3d_core.c usb: gadget: mv: Add USB 3.0 device driver for Marvell PXA2128 chip. 2012-06-22 13:08:21 +03:00
mv_u3d.h usb: gadget: mv: Add USB 3.0 device driver for Marvell PXA2128 chip. 2012-06-22 13:08:21 +03:00
mv_udc_core.c usb: phy: patches for v3.6 merge window 2012-07-05 15:35:41 -07:00
mv_udc.h usb: gadget: Update mv_udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:57 +03:00
ncm.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
ndis.h usb/net: rndis: break out <linux/rndis.h> defines 2012-05-12 15:02:22 -04:00
net2272.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
net2272.h
net2280.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
net2280.h usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
nokia.c
omap_udc.c USB patches for 3.6-rc1 2012-07-26 10:23:47 -07:00
omap_udc.h usb: gadget: Update omap_udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:57 +03:00
pch_udc.c usb: gadget: pch_udc: Fix likely misuse of | for & 2012-06-04 18:12:06 +03:00
printer.c usb: gadget: make g_printer use composite 2012-05-04 15:53:04 +03:00
pxa25x_udc.c usb: phy: patches for v3.6 merge window 2012-07-05 15:35:41 -07:00
pxa25x_udc.h usb: gadget: Update pxa25x_udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:58 +03:00
pxa27x_udc.c usb: phy: fix return value check of usb_get_phy 2012-07-02 10:40:49 +03:00
pxa27x_udc.h usb: otg: Rename otg_transceiver to usb_phy 2012-02-13 13:34:36 +02:00
r8a66597-udc.c gadget/r8a66597: remove conditional compilation of clk code 2012-07-30 17:25:12 -07:00
r8a66597-udc.h gadget/r8a66597: remove conditional compilation of clk code 2012-07-30 17:25:12 -07:00
rndis.c usb/net: rndis: fixup a few name prefixes 2012-05-12 15:13:39 -04:00
rndis.h usb/net: rndis: break out <linux/rndis.h> defines 2012-05-12 15:02:22 -04:00
s3c2410_udc.c usb: gadget: s3c2410_udc: Remove unneeded condition 2012-06-04 18:15:48 +03:00
s3c2410_udc.h usb: gadget: Update s3c2410_udc to use usb_endpoint_descriptor inside the struct usb_ep 2012-05-04 15:52:59 +03:00
s3c-hsotg.c usb: gadget: s3c-hsotg: Propagate devicetree to gadget drivers 2012-07-02 10:38:01 +03:00
s3c-hsotg.h usb:hsotg:samsung: Remove the S3C_ prefix from registers definition. 2012-05-04 15:53:17 +03:00
s3c-hsudc.c usb: phy: patches for v3.6 merge window 2012-07-05 15:35:41 -07:00
serial.c usb: gadget: add usb3.0 descriptors to serial gadgets 2012-02-09 10:11:36 +02:00
storage_common.c usb: gadget: mass_storage: make "file" and "ro" read only in some cases 2012-07-02 10:36:55 +03:00
tcm_usb_gadget.c target: Allow for target_submit_cmd() returning errors 2012-07-17 17:05:05 -07:00
tcm_usb_gadget.h usb-gadget: Initial merge of target module for UASP + BOT 2012-05-09 15:25:59 -07:00
u_ether.c USB patches for 3.6-rc1 2012-07-26 10:23:47 -07:00
u_ether.h usb: gadget: f_rndis: Set rndis vendor parameters 2012-05-10 12:27:58 -07:00
u_phonet.h
u_serial.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-05-22 19:22:50 -07:00
u_serial.h
u_uac1.c usb: gadget: Rename audio function to uac1 2012-02-15 10:09:48 +02:00
u_uac1.h usb: gadget: Rename audio function to uac1 2012-02-15 10:09:48 +02:00
udc-core.c usb: gadget: udc-core: fix incompatibility with dummy-hcd 2012-04-27 11:06:15 +03:00
usbstring.c USB: remove homegrown UTF conversion routine for gadgets 2011-11-18 10:51:01 -08:00
uvc_queue.c [media] usb: gadget/uvc: Remove non-required locking from 'uvc_queue_next_buffer' routine 2012-04-10 15:46:02 -03:00
uvc_queue.h
uvc_v4l2.c Merge remote-tracking branch 'linus/master' into staging/for_v3.5 2012-05-15 08:39:25 -03:00
uvc_video.c usb gadget: clean up FSF boilerplate text 2011-09-09 16:00:09 -07:00
uvc.h usb: gadget: uvc: Add super-speed support to UVC webcam gadget 2012-06-04 18:12:36 +03:00
webcam.c usb: gadget: uvc: Add super-speed support to UVC webcam gadget 2012-06-04 18:12:36 +03:00
zero.c usb: gadget: add isochronous support to gadget zero 2012-05-04 15:53:08 +03:00