Support For Creating / Removing UBI Blocks

Metin Kaya kayameti at gmail.com
Mon Jul 25 07:56:41 UTC 2016


do_rmvol also has the same problem.
If I use mkblock and rmblock, then they can't be unique.
Hence, I renamed ubimkblock as ubicrblock and ubirmblock as ubidlblock.
Please see the attached patch.

Thank you very much.

On Mon, Jul 25, 2016 at 10:44 AM, Baruch Siach <baruch at tkos.co.il> wrote:

> Hi Metin Kaya,
>
> On Mon, Jul 25, 2016 at 10:38:08AM +0300, Metin Kaya wrote:
> > I did not get what is wrong. Even the previous version of the patch works
> > fine.
>
> The problem is that the 'do_mkvol' macro, for example, must evaluate to
> true
> if, and only if, the applet name is "ubimkvol". With this patch,
> 'do_mkvol' is
> incorrectly also true when the applet name is "ubimkblock".
>
> baruch
>
> > On Mon, Jul 25, 2016 at 10:34 AM, Baruch Siach <baruch at tkos.co.il>
> wrote:
> > > On Mon, Jul 25, 2016 at 10:28:32AM +0300, Metin Kaya wrote:
> > > > @@ -68,6 +86,8 @@
> > > >
> > > >  #define do_attach (ENABLE_UBIATTACH && applet_name[3] == 'a')
> > > >  #define do_detach (ENABLE_UBIDETACH && applet_name[3] == 'd')
> > > > +#define do_mkblock (ENABLE_UBIMKBLOCK && applet_name[3] == 'm' &&
> > > applet_name[5] == 'b')
> > > > +#define do_rmblock (ENABLE_UBIRMBLOCK && applet_name[3] == 'r' &&
> > > applet_name[5] == 'b')
> > > >  #define do_mkvol  (ENABLE_UBIMKVOL  && applet_name[3] == 'm')
> > > >  #define do_rmvol  (ENABLE_UBIRMVOL  && applet_name[4] == 'm')
> > >
> > > These checks incorrectly match ubimkblock and ubirmblock still.
> > >
> > > baruch
>
> --
>      http://baruch.siach.name/blog/                  ~. .~   Tk Open
> Systems
> =}------------------------------------------------ooO--U--Ooo------------{=
>    - baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20160725/3273eda3/attachment.html>
-------------- next part --------------
--- ubi_tools.c.orig	2016-05-26 20:42:44.000000000 +0300
+++ ubi_tools.c	2016-07-25 10:53:29.274027369 +0300
@@ -17,6 +17,20 @@
 //config:	help
 //config:	  Detach MTD device from an UBI device.
 //config:
+//config:config UBICRBLOCK
+//config:	bool "ubicrblock"
+//config:	default y
+//config:	select PLATFORM_LINUX
+//config:	help
+//config:	  Create a block device on top of a UBI volume.
+//config:
+//config:config UBIDLBLOCK
+//config:	bool "ubidlblock"
+//config:	default y
+//config:	select PLATFORM_LINUX
+//config:	help
+//config:	  Delete a block device from a UBI volume.
+//config:
 //config:config UBIMKVOL
 //config:	bool "ubimkvol"
 //config:	default y
@@ -47,6 +61,8 @@
 
 //applet:IF_UBIATTACH(APPLET_ODDNAME(ubiattach, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubiattach))
 //applet:IF_UBIDETACH(APPLET_ODDNAME(ubidetach, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubidetach))
+//applet:IF_UBICRBLOCK(APPLET_ODDNAME(ubicrblock, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubicrblock))
+//applet:IF_UBIDLBLOCK(APPLET_ODDNAME(ubidlblock, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubidlblock))
 //applet:IF_UBIMKVOL(APPLET_ODDNAME(ubimkvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubimkvol))
 //applet:IF_UBIRMVOL(APPLET_ODDNAME(ubirmvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubirmvol))
 //applet:IF_UBIRSVOL(APPLET_ODDNAME(ubirsvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubirsvol))
@@ -54,6 +70,8 @@
 
 //kbuild:lib-$(CONFIG_UBIATTACH) += ubi_tools.o
 //kbuild:lib-$(CONFIG_UBIDETACH) += ubi_tools.o
+//kbuild:lib-$(CONFIG_UBICRBLOCK) += ubi_tools.o
+//kbuild:lib-$(CONFIG_UBIDLBLOCK) += ubi_tools.o
 //kbuild:lib-$(CONFIG_UBIMKVOL)  += ubi_tools.o
 //kbuild:lib-$(CONFIG_UBIRMVOL)  += ubi_tools.o
 //kbuild:lib-$(CONFIG_UBIRSVOL)  += ubi_tools.o
@@ -68,6 +86,8 @@
 
 #define do_attach (ENABLE_UBIATTACH && applet_name[3] == 'a')
 #define do_detach (ENABLE_UBIDETACH && applet_name[3] == 'd')
+#define do_crblock (ENABLE_UBICRBLOCK && applet_name[3] == 'c')
+#define do_rmblock (ENABLE_UBIDLBLOCK && applet_name[4] == 'l')
 #define do_mkvol  (ENABLE_UBIMKVOL  && applet_name[3] == 'm')
 #define do_rmvol  (ENABLE_UBIRMVOL  && applet_name[4] == 'm')
 #define do_rsvol  (ENABLE_UBIRSVOL  && applet_name[4] == 's')
@@ -194,6 +214,21 @@
 		xioctl(fd, UBI_IOCDET, &dev_num);
 	} else
 
+//usage:#define ubicrblock_trivial_usage
+//usage:       "UBI_DEVICE"
+//usage:#define ubicrblock_full_usage "\n\n"
+//usage:       "Create a block device on top of a UBI volume\n"
+	if (do_crblock) {
+		xioctl(fd, UBI_IOCVOLCRBLK, NULL);
+	} else
+//usage:#define ubidlblock_trivial_usage
+//usage:       "UBI_DEVICE"
+//usage:#define ubidlblock_full_usage "\n\n"
+//usage:       "Delete a block device from a UBI volume\n"
+//usage:     "\n	UBI_DEVICE"
+	if (do_rmblock) {
+		xioctl(fd, UBI_IOCVOLRMBLK, NULL);
+	} else
 //usage:#define ubimkvol_trivial_usage
 //usage:       "-N NAME [-s SIZE | -m] UBI_DEVICE"
 //usage:#define ubimkvol_full_usage "\n\n"


More information about the busybox mailing list