linux_dsm_epyc7002/drivers/usb/gadget
Andrzej Pietrasiewicz 8b903fd7f9 usb: gadget: f_mass_storage: add a level of indirection for luns storage
This is needed to prepare for configfs integration.

So far the luns have been allocated during gadget's initialization, based
on the nluns module parameter's value; the exact number is known when the
gadget is initialized and that number of luns is allocated in one go; they
all will be used.

When configfs is in place, the luns will be created one-by-one by the user.
Once the user is satisfied with the number of luns, they activate the
gadget. The number of luns must be <= FSG_MAX_LUN (currently 8), but other
than that it is not known up front and the user need not use contiguous
numbering (apart from the default lun #0). On the other hand, the function
code uses lun numbers to identify them and the number needs to be used
as an index into an array.

Given the above, an array needs to be allocated, but it might happen that
7 out of its 8 elements will not be used. On my machine
sizeof(struct fsg_lun) == 462, so > 3k of memory is allocated but not used
in the worst case.

By adding another level of indirection (allocating an array of pointers
to struct fsg_lun and then allocating individual luns instead of an array
of struct fsg_luns) at most 7 pointers are wasted, which is much less.

This patch also changes some for/while loops to cope with the fact
that in the luns array some entries are potentially empty.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
2013-10-01 09:51:33 -05:00
..
acm_ms.c usb: gadget: create a utility module for mass_storage 2013-10-01 09:50:57 -05:00
amd5536udc.c usb: gadget: amd5536udc: remove unnecessary pci_set_drvdata() 2013-10-01 09:31:16 -05:00
amd5536udc.h usb: gadget: amd5536udc: remove unused structure member 2013-03-18 11:16:56 +02:00
at91_udc.c usb: gadget: at91_udc: add usb_clk for transition to common clk framework 2013-08-02 15:17:03 +03:00
at91_udc.h usb: gadget: at91_udc: add usb_clk for transition to common clk framework 2013-08-02 15:17:03 +03:00
atmel_usba_udc.c usb: gadget: double unlocks on error in atmel_usba_start() 2013-08-27 15:05:35 -05:00
atmel_usba_udc.h USB: gadget: atmel_usba: add DT support 2013-05-24 07:14:45 +08:00
audio.c
bcm63xx_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
cdc2.c usb: gadget: cdc2: fix conversion to new interface of f_ecm 2013-09-17 10:38:52 -05:00
composite.c USB: gadget: audit sysfs attribute permissions 2013-08-27 12:50:53 -07:00
config.c
configfs.c usb: gadget: configfs: add a method to unregister the gadget 2013-10-01 09:50:22 -05:00
configfs.h usb: gadget: configfs: add a method to unregister the gadget 2013-10-01 09:50:22 -05:00
dbgp.c usb: gadget: allocate & giveback serial ports instead hard code them 2013-01-21 20:52:43 +02:00
dummy_hcd.c usb: gadget: fix a bug and a WARN_ON in dummy-hcd 2013-09-17 10:38:51 -05:00
epautoconf.c
ether.c usb: gadget: ether: put_usb_function on unbind 2013-07-25 20:35:23 +03:00
f_acm.c usb: acm gadget: Null termintate strings table 2013-08-30 11:10:36 -07:00
f_ecm.c usb: gadget: f_ecm: Staticize ecm_alloc 2013-09-17 11:06:44 -05:00
f_eem.c usb: gadget: f_eem: Staticize eem_alloc 2013-09-17 11:06:50 -05:00
f_fs.c USB: Fix breakage in ffs_fs_mount() 2013-09-26 16:22:29 -07:00
f_hid.c
f_loopback.c usb: gadget: convert source sink and loopback to new function interface 2013-01-21 20:52:40 +02:00
f_mass_storage.c usb: gadget: f_mass_storage: add a level of indirection for luns storage 2013-10-01 09:51:33 -05:00
f_mass_storage.h usb: gadget: f_mass_storage: factor out a header file 2013-10-01 09:51:17 -05:00
f_midi.c
f_ncm.c usb/gadget: free opts struct on error recovery 2013-07-25 11:32:15 -07:00
f_obex.c usb: gadget: f_obex: remove compatibility layer 2013-06-10 17:29:08 +03:00
f_phonet.c usb: gadget: f_phonet: remove unused preprocessor conditional 2013-07-29 14:15:23 +03:00
f_rndis.c usb/gadget: free opts struct on error recovery 2013-07-25 11:32:15 -07:00
f_serial.c usb: gadget: f_serial: add configfs support 2013-04-03 14:43:35 +03:00
f_sourcesink.c usb: gadget: f_sourcesink.c: correct a copy-paste misnomer 2013-04-23 14:12:02 +03:00
f_subset.c usb/gadget: free opts struct on error recovery 2013-07-25 11:32:15 -07:00
f_uac1.c usb: gadget: f_uac1: Staticize local functions 2013-08-09 16:34:19 +03:00
f_uac2.c USB: gadget: f_uac2: Fix broken prm to uac2 mapping 2013-06-10 17:10:23 +03:00
f_uvc.c Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2013-07-13 12:09:57 -07:00
f_uvc.h usb: gadget: uvc: Fix coding style issues introduced by SS support 2013-03-18 11:18:18 +02:00
fotg210-udc.c USB: Faraday fotg210: fix email addresses 2013-09-17 09:36:10 -07:00
fotg210.h usb: gadget: add Faraday fotg210_udc driver 2013-06-10 17:58:11 +03:00
fsl_mxc_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
fsl_qe_udc.c usb: gadget: use platform_{get,set}_drvdata() 2013-05-28 20:16:56 +03:00
fsl_qe_udc.h
fsl_udc_core.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
fsl_usb2_udc.h usb: gadget: fsl_mxc_udc: replace MX35_IO_ADDRESS to ioremap 2013-01-18 14:08:21 +02:00
functions.c usb: gadget: add a forward pointer from usb_function to its "instance" 2013-01-21 20:52:46 +02:00
fusb300_udc.c USB: Faraday fotg210: fix email addresses 2013-09-17 09:36:10 -07:00
fusb300_udc.h usb: gadget: fusb300_udc: add FUSB300_EPSET0_STL_CLR for clearing EP0 stall 2013-04-02 16:57:24 +03:00
g_ffs.c usb: gadget: f_rndis: convert to new function interface with backward compatibility 2013-06-10 17:58:08 +03:00
g_zero.h usb: gadget: convert source sink and loopback to new function interface 2013-01-21 20:52:40 +02:00
gadget_chips.h
gmidi.c usb: gadget: consider link speed for bMaxPower 2013-01-10 12:38:52 +02:00
goku_udc.c usb: gadget: goku_udc: remove unnecessary pci_set_drvdata() 2013-10-01 09:31:17 -05:00
goku_udc.h usb: gadget: goku_udc: let udc-core manage gadget->dev 2013-03-18 11:16:45 +02:00
hid.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
inode.c Merge git://git.kvack.org/~bcrl/aio-next 2013-09-13 10:55:58 -07:00
Kconfig usb: gadget: create a utility module for mass_storage 2013-10-01 09:50:57 -05:00
lpc32xx_udc.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-05-01 17:51:54 -07:00
m66592-udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
m66592-udc.h usb: gadget: m66592-udc: convert to udc_start/udc_stop 2013-01-24 21:11:29 +02:00
Makefile usb: gadget: create a utility module for mass_storage 2013-10-01 09:50:57 -05:00
mass_storage.c usb: gadget: create a utility module for mass_storage 2013-10-01 09:50:57 -05:00
multi.c usb: gadget: create a utility module for mass_storage 2013-10-01 09:50:57 -05:00
mv_u3d_core.c usb: gadget: mv_u3d_core: fix memory leaks 2013-10-01 09:31:21 -05:00
mv_u3d.h
mv_udc_core.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
mv_udc.h usb: gadget: mv_udc_core: remove unused clock 2013-04-02 11:42:45 +03:00
ncm.c usb: gadget: ncm: convert to new function interface 2013-06-10 17:12:52 +03:00
ndis.h
net2272.c USB: gadget: audit sysfs attribute permissions 2013-08-27 12:50:53 -07:00
net2272.h
net2280.c usb: gadget: net2280: remove unnecessary pci_set_drvdata() 2013-10-01 09:31:18 -05:00
net2280.h
nokia.c usb: gadget: nokia: convert to new interface of f_ecm 2013-06-10 17:32:23 +03:00
omap_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
omap_udc.h
pch_udc.c usb: gadget: pch_udc: remove unnecessary pci_set_drvdata() 2013-10-01 09:31:17 -05:00
printer.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
pxa25x_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
pxa25x_udc.h usb: gadget: pxa25x_udc: convert to udc_start/udc_stop 2013-01-24 21:11:31 +02:00
pxa27x_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
pxa27x_udc.h usb: gadget: pxa27x_udc: convert to udc_start/udc_stop 2013-01-24 21:11:31 +02:00
r8a66597-udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
r8a66597-udc.h
rndis.c usb: gadget: rndis: Staticize rndis_init()/rndis_exit() 2013-08-09 16:33:36 +03:00
rndis.h usb: gadget: rndis: init & exit rndis at module load/unload 2013-06-10 17:58:09 +03:00
s3c2410_udc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
s3c2410_udc.h usb: gadget: s3c2410: convert to udc_start/udc_stop 2013-01-24 21:11:32 +02:00
s3c-hsotg.c usb: s3c-hsotg: do not disconnect gadget when receiving ErlySusp intr 2013-09-17 11:08:46 -05:00
s3c-hsotg.h
s3c-hsudc.c usb: gadget: use dev_get_platdata() 2013-07-30 11:18:46 +03:00
serial.c usb: gadget: serial: convert to new interface of f_obex 2013-04-03 14:43:36 +03:00
storage_common.c usb: gadget: create a utility module for mass_storage 2013-10-01 09:50:57 -05:00
storage_common.h usb: gadget: create a utility module for mass_storage 2013-10-01 09:50:57 -05:00
tcm_usb_gadget.c target: make queue_tm_rsp() return void 2013-07-07 18:36:53 -07:00
tcm_usb_gadget.h
u_ecm.h usb: gadget: f_ecm: add configfs support 2013-06-10 17:27:54 +03:00
u_eem.h usb: gadget: f_eem: add configfs support 2013-06-10 17:58:00 +03:00
u_ether_configfs.h usb: gadget: add helpers for configfs support for USB Ethernet 2013-06-10 17:15:43 +03:00
u_ether.c usb: gadget: u_ether: allow getting binary-form host address 2013-06-10 17:57:45 +03:00
u_ether.h usb: gadget: f_eem: remove compatibility layer 2013-06-10 17:57:47 +03:00
u_gether.h usb: gadget: f_subset: add configfs support 2013-06-10 17:58:08 +03:00
u_ncm.h usb: gadget: f_ncm: add configfs support 2013-06-10 17:15:02 +03:00
u_phonet.h usb: gadget: f_phonet: remove compatibility layer 2013-06-10 17:31:55 +03:00
u_rndis.h usb: gadget: f_rndis: add configfs support 2013-06-10 17:58:10 +03:00
u_serial.c usb: gadget: u_serial: fix typo which cause build warning 2013-03-14 12:47:53 +02:00
u_serial.h usb: gadget: nokia: use function framework for ACM 2013-04-03 14:43:20 +03:00
u_uac1.c usb: gadget: u_uac1: add __user annotation 2013-08-09 16:34:13 +03:00
u_uac1.h
udc-core.c USB: gadget: audit sysfs attribute permissions 2013-08-27 12:50:53 -07:00
usbstring.c
uvc_queue.c usb: gadget: uvc: Fix error handling in uvc_queue_buffer() 2013-08-09 17:40:54 +03:00
uvc_queue.h usb: gadget/uvc: Port UVC webcam gadget to use videobuf2 framework 2013-04-02 11:42:48 +03:00
uvc_v4l2.c usb: gadget/uvc: Add support for 'get_unmapped_area' for MMUless architectures 2013-04-02 11:42:49 +03:00
uvc_video.c usb: gadget/uvc: Port UVC webcam gadget to use videobuf2 framework 2013-04-02 11:42:48 +03:00
uvc.h [media] f_uvc: add v4l2_device and replace parent with v4l2_dev 2013-06-21 11:04:47 -03:00
webcam.c usb: gadget: consider link speed for bMaxPower 2013-01-10 12:38:52 +02:00
zero.c usb: gadget: zero: Add flexible auto remote wakeup test method 2013-10-01 09:31:15 -05:00