There are looks of examples that do this. You should check out these configurations:
$ find . -name usbmsc
./hymini-stm32v/usbmsc
./lpcxpresso-lpc1768/usbmsc
./mcu123-lpc214x/usbmsc
./olimex-lpc1766stk/usbmsc
./spark/usbmsc
./stm3210e-eval/usbmsc
./stm32f429i-disco/usbmsc
./teensy-2.0/usbmsc
Configuration settings:
CONFIG_USBMSC=y
...
CONFIG_SYSTEM_USBMSC=y
Some special setting is also required in your board initialization logic. Look at:
$ find . -name *_usbmsc.c
./cloudctrl/src/stm32_usbmsc.c
./ea3131/src/lpc31_usbmsc.c
./ea3152/src/lpc31_usbmsc.c
./fire-stm32v2/src/stm32_usbmsc.c
./freedom-k64f/src/k64_usbmsc.c
./hymini-stm32v/src/stm32_usbmsc.c
./kwikstik-k40/src/k40_usbmsc.c
./lpcxpresso-lpc1768/src/lpc17_usbmsc.c
./mcu123-lpc214x/src/lpc2148_usbmsc.c
./olimex-lpc1766stk/src/lpc17_usbmsc.c
./olimexino-stm32/src/stm32_usbmsc.c
./pic32mx-starterkit/src/pic32mx_usbmsc.c
./pic32mx7mmb/src/pic32_usbmsc.c
./sam3u-ek/src/sam_usbmsc.c
./sam4e-ek/src/sam_usbmsc.c
./sama5d3-xplained/src/sam_usbmsc.c
./sama5d3x-ek/src/sam_usbmsc.c
./sama5d4-ek/src/sam_usbmsc.c
./samv71-xult/src/sam_usbmsc.c
./shenzhou/src/stm32_usbmsc.c
./spark/src/stm32_usbmsc.c
./stm3210e-eval/src/stm32_usbmsc.c
./teensy-2.0/src/at90usb_usbmsc.c
./twr-k60n512/src/k60_usbmsc.c
./u-blox-c027/src/lpc17_usbmsc.c
./viewtool-stm32f107/src/stm32_usbmsc.c
./zkit-arm-1769/src/lpc17_usbmsc.c
I checked stm3210e-eval/src/stm32_usbmsc.c. It is a good example.