linux/drivers/mtd/ubi
Ezequiel Garcia 778c7eb82f UBI: weaken the 'exclusive' constraint when opening volumes to rename
The UBI volume rename ioctl (UBI_IOCRNVOL) open the volumes in exclusive
mode. The volumes are opened for two reasons: to build a volume rename list,
and a volume remove list.

However, the first open constraint is excessive and can be replaced by
a 'read-write' open mode. The second open constraint is properly set as
'exclusive' given the volume is opened for removal and we don't want any
users around.

By weakening the former 'exclusive' mode, we allow 'read-only' users to keep
the volume open, while a rename is taking place. This is useful to perform
an atomic rename, in a firmware upgrade scenario, while keeping the volume
in read-only use (for instance, if a ubiblock is mounted as rootfs).

It's worth mention this is not the case of UBIFS, which keeps the volume
opened as 'read-write' despite mounted as read-write or read-only mode.

This change was suggested at least twice by Artem:
http://lists.infradead.org/pipermail/linux-mtd/2012-September/044175.html
http://permalink.gmane.org/gmane.linux.drivers.mtd/39866

Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
2014-05-13 13:45:16 +03:00
..
attach.c UBI: fix error return code 2014-01-02 17:16:01 +02:00
block.c UBI: avoid workqueue format string leak 2014-05-05 09:31:33 +03:00
build.c UBI: R/O block driver on top of UBI volumes 2014-02-28 16:29:48 +02:00
cdev.c UBI: weaken the 'exclusive' constraint when opening volumes to rename 2014-05-13 13:45:16 +03:00
debug.c UBI: embed ubi_debug_info field in ubi_device struct 2012-12-10 13:38:59 +02:00
debug.h mtd: rename random32() to prandom_u32() 2013-02-04 09:26:28 +02:00
eba.c UBI: Wire-up ->fm_sem 2012-10-03 12:29:37 +03:00
fastmap.c UBI: fix some use after free bugs 2014-02-04 09:44:30 +02:00
gluebi.c UBI: gluebi: rename misleading variables 2012-11-30 13:54:41 +02:00
io.c UBI: avoid program operation on NOR flash after erasure interrupted 2014-01-09 18:25:38 +02:00
kapi.c UBI: modify ubi_wl_flush function to clear work queue for a lnum 2012-05-21 11:34:41 +03:00
Kconfig UBI: block: Add CONFIG_BLOCK dependency 2014-03-04 14:49:53 +02:00
Makefile UBI: R/O block driver on top of UBI volumes 2014-02-28 16:29:48 +02:00
misc.c UBI: comply with coding style 2012-09-04 09:39:01 +03:00
ubi-media.h UBI: Add fastmap on-flash data structures 2012-10-03 12:29:37 +03:00
ubi.h MTD updates for 3.15: 2014-04-07 10:17:30 -07:00
upd.c UBI: replace memcpy with struct assignment 2012-12-03 13:54:14 +02:00
vmt.c UBI: introduce helpers dbg_chk_{io, gen} 2012-12-10 13:38:59 +02:00
vtbl.c UBI: introduce helpers dbg_chk_{io, gen} 2012-12-10 13:38:59 +02:00
wl.c UBI: fix ubi free PEBs count calculation 2014-05-05 09:31:33 +03:00