When connecting USB while reading KEPUB, nickel still has open file handles to the .kepub file at the time it umounts. It frees them a few seconds later... so this is a "sad face turns into happy face" case.
Code:
umount failure /mnt/onboard Wed Aug 12 16:45:10 UTC 2015
/proc/1315/fd/32 2831262 5536 81ed 0 0 b303 73 1 0 0 1439337600 1439394562 1439394563 4096
/proc/1316/fd/32 2831262 5536 81ed 0 0 b303 73 1 0 0 1439337600 1439394562 1439394563 4096
/proc/1337/fd/32 2831262 5536 81ed 0 0 b303 73 1 0 0 1439337600 1439394562 1439394563 4096
/proc/516/fd/32 2831262 5536 81ed 0 0 b303 73 1 0 0 1439337600 1439394562 1439394563 4096
lr-x------ 1 root root 64 Aug 12 16:45 /proc/1315/fd/32 -> /.kobo/kepub/816d01e8-6501-43ec-9985-3dd7bdc7c55b
lr-x------ 1 root root 64 Aug 12 16:45 /proc/1316/fd/32 -> /.kobo/kepub/816d01e8-6501-43ec-9985-3dd7bdc7c55b
lr-x------ 1 root root 64 Aug 12 16:45 /proc/1337/fd/32 -> /.kobo/kepub/816d01e8-6501-43ec-9985-3dd7bdc7c55b
lr-x------ 1 root root 64 Aug 12 16:45 /proc/516/fd/32 -> /.kobo/kepub/816d01e8-6501-43ec-9985-3dd7bdc7c55b
init(1)-+-dbus-daemon(514)
|-dbus-daemon(513)
|-fickel-launcher(866)---fickel(867)
|-getty(519)
|-hindenburg(515)
|-nickel(516)-+-sh(1315)---usb(1316)---sleep(1337)
| |-{FifoHardwareSt}(788)
| |-{QEvdevTouchScr}(803)
| |-{QProcessManage}(786)
| |-{QThread}(799)
| |-{QThread}(800)
| |-{QThread}(804)
| |-{Qt HTTP thread}(874)
| |-{Qt bearer thre}(801)
| |-{Thread (pooled}(1291)
| |-{nickel}(1277)
| `-{nickel}(1278)
|-sickel-launcher(797)---sickel(798)
|-swapper(208)
|-syslogd(795)
|-udevd(491)
`-usbdebug.sh(1339)---pstree(1579)
The paths say /.kobo/kepub/thingy because that's what lazy umount does, if it can't umount properly it bends /mnt/onboard/ into a virtual / that is still hooked to the read-write filesystem.
It's probably not a problem in practice, since nickel frees it in the end (and UsbDebug runs quite early, it caught nickel's usb script sleeping so it might be a second before it loaded the storage module.