On Fri, Sep 23, 2016 at 12:11:56PM +0200, iw3gtf@xxxxxxxx wrote: > Hi, > > > ----- Original Nachricht ---- > Von: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > An: Giorgio Dal Molin <iw3gtf@xxxxxxxx> > Datum: 22.09.2016 10:04 > Betreff: Re: [PATCH 2/2] commands: ubi: added the new command 'ubirename' to > rename ubi volumes. > > > On Wed, Sep 21, 2016 at 10:04:43AM +0200, Giorgio Dal Molin wrote: > > > From: Giorgio Dal Molin <giorgio.dal.molin@xxxxxxxxxxx> > > > > > > The syntax was taken from the corresponding command of the 'mts-utils' > > > userland package: > > > > > > # ubirename UBIDEV OLD_NAME NEW_NAME [OLD_NAME NEW_NAME ...] > > > > > > Signed-off-by: Giorgio Dal Molin <iw3gtf@xxxxxxxx> > > > --- > > > commands/ubi.c | 87 > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > 1 file changed, 87 insertions(+) > > > > > > diff --git a/commands/ubi.c b/commands/ubi.c > > > index 26b521f..3479340 100644 > > > --- a/commands/ubi.c > > > +++ b/commands/ubi.c > > > @@ -6,6 +6,8 @@ > > > #include <errno.h> > > > #include <getopt.h> > > > #include <linux/mtd/mtd.h> > > > +#include <linux/mtd/ubi.h> > > > +#include <libgen.h> > > > #include <linux/kernel.h> > > > #include <linux/stat.h> > > > #include <linux/mtd/mtd-abi.h> > > > @@ -306,3 +308,88 @@ BAREBOX_CMD_START(ubirmvol) > > > BAREBOX_CMD_GROUP(CMD_GRP_PART) > > > BAREBOX_CMD_HELP(cmd_ubirmvol_help) > > > BAREBOX_CMD_END > > > + > > > + > > > +static int get_vol_id(const char *vol_name) > > > +{ > > > + struct ubi_volume_desc *desc; > > > + struct cdev *vol_cdev; > > > + struct ubi_volume_info vi; > > > + > > > + vol_cdev = cdev_by_name(vol_name); > > > + if(!vol_cdev) { > > > + perror("cdev_by_name"); > > > + return -1; > > > + } > > > + desc = ubi_open_volume_cdev(vol_cdev, UBI_READONLY); > > > + if(IS_ERR(desc)) { > > > + perror("ubi_open_volume_cdev"); > > > + return -1; > > > + } > > > + ubi_get_volume_info(desc, &vi); > > > + ubi_close_volume(desc); > > > + > > > + return vi.vol_id; > > > +}; > > > > This get_vol_id() is not particularly nice. Also I do not like having > > the rename operation inside the ioctl parser as this means we cannot > > make the ubirename code optional for users that do not need renaming. > > > > I just sent out a series which should help you in this regard. Can you > > base your code ontop of this? > > I've noticed a problem in the 3rd patch ([PATCH 3/4] mtd: ubi: commands: use function API to access ubi volumes) > of your last UBI serie: in the resulting code in 'commands/ubi.c', function 'do_ubirmvol()': > > ... > desc = ubi_open_volume_nm(ubinum, argv[2], UBI_EXCLUSIVE); > if (IS_ERR(desc)) { > ret = PTR_ERR(desc); > printf("failed to open volume %s: %s\n", argv[2], strerror(-ret)); > goto err1; > } > > ret = ubi_api_remove_volume(desc, 0); > if (ret) > printf("failed to remove volume %s: %s\n", argv[2], strerror(-ret)); > > err1: > ubi_close_volume(desc); > err: > close(fd); > > return ret ? 1 : 0; > } > > You have a wrong 'goto err1': in that case the 'desc' pointer is not a memory address, it > represent a negative error code and you cannot use it in ubi_close_volume(desc) (it segfaults). Fixed that. Thanks for noting. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox