From patchwork Fri Jun 10 09:18:01 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: olivier.hardouin@gmail.com X-Patchwork-Id: 633590 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (caladan.dune.hu [78.24.191.180]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3rQxRk0y9Xz9sdQ for ; Fri, 10 Jun 2016 19:18:26 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=EJlo+kxK; dkim-atps=neutral Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 21B1AB91704; Fri, 10 Jun 2016 11:18:20 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP; Fri, 10 Jun 2016 11:18:20 +0200 (CEST) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id E9509B91701 for ; Fri, 10 Jun 2016 11:18:17 +0200 (CEST) X-policyd-weight: using cached result; rate: -7 Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Fri, 10 Jun 2016 11:18:17 +0200 (CEST) Received: by mail-wm0-f66.google.com with SMTP id n184so16423876wmn.1 for ; Fri, 10 Jun 2016 02:18:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=6pZ8SZu/xu6nZY8lP8XMnkpXq3HzBx8GC9L7cqZEm58=; b=EJlo+kxKM7MQNug4dJlvdZspCbrnWFUwWCV6JjVx3nyGNKvSgV45eYVr5+WfquUw/C ih2u5+V4qoHbmbZXKtIDAOKmWVnWTlBODV3Gxh2OrcjoISthFmXn105EWC4VsR1tOzb6 pM8ovGFyUsy9lD/jlvh6B8x8w2rOFSNyxrhwvaXJKMNDqEon2gvgiopAa/2R1jCqP3Ef Mi3FNb6NxI/T4lxfs94kBWa7V2MpQFNaewEOXC9qAjmG7zAtDMoGEIZomhGljp8Pv8xH CNx1cb8IEbRPlQScEm822Jf6MvkyY7K3seZ+9qRPcK3KIi66aEDi4m5AfDqUqw9IPn0R DLjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=6pZ8SZu/xu6nZY8lP8XMnkpXq3HzBx8GC9L7cqZEm58=; b=l6KP0zJ5rJUUbk3bmuNqc2shQI9v60RHxa4Zrrh50m0BW7W9x/hp0Vq0pEc+wCp0rj 7zY0Yh5MTyaX6ulMAle7eu49iyu6ZS7lZ2IbBHvpbVEIwXWJRgsuHSDsudeUhxl4ts15 92seuuWmageYDwFb/ZWSzwsZloiUDYi2Ve2jYlbnmmSNSVtxe8L7zN9TsoQCZhdzFVMH tWmAmQFZTkcmBTqR7bxqek9kq9JB+iG7ulCpH3VBv3Eg0tRKsShkUmKW3Bd0HPBoswo1 8P+dYcLG63cmCZ524MLE2At9eTviaeXD99RyWig3jUS7APHch7uLdb5vQos/F+SZHDL4 F28A== X-Gm-Message-State: ALyK8tJ4tEJciraXS67rqZ7kPG35I8KbfQb+Cq87Ggps1HJG9mbDMqYvHA7j1P6uEpuquQ== X-Received: by 10.194.204.195 with SMTP id la3mr1115994wjc.165.1465550297257; Fri, 10 Jun 2016 02:18:17 -0700 (PDT) Received: from ubuntu32bits.eu.thmulti.com ([91.183.48.131]) by smtp.gmail.com with ESMTPSA id wo3sm11340326wjb.12.2016.06.10.02.18.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 10 Jun 2016 02:18:16 -0700 (PDT) From: olivier.hardouin@gmail.com To: openwrt-devel@lists.openwrt.org, lede-dev@lists.infradead.org Date: Fri, 10 Jun 2016 11:18:01 +0200 Message-Id: <1465550281-8719-1-git-send-email-olivier.hardouin@gmail.com> X-Mailer: git-send-email 1.9.1 Subject: [OpenWrt-Devel] [PATCH mountd] filesystem mount options in uci config X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" Move (previously hardcoded) mount option to UCI to allow different configuration like charset (utf-8 or iso) and filesystem driver (if alternative ones are used). The fs names are changed in lowercase to comply with UCI general naming. Signed-off-by: Olivier Hardouin --- mount.c | 69 ++++++++++++++++++++++++++--------------------------------------- 1 file changed, 28 insertions(+), 41 deletions(-) diff --git a/mount.c b/mount.c index 8892040..c8f7ea6 100644 --- a/mount.c +++ b/mount.c @@ -51,15 +51,15 @@ struct mount { char *fs_names[] = { "", "", - "MBR", - "EXT2", - "EXT3", - "FAT", - "HFSPLUS", + "mbr", + "ext2", + "ext3", + "fat", + "hfsplus", "", - "NTFS", + "ntfs", "", - "EXT4" + "ext4" }; #define MAX_MOUNTED 32 @@ -227,42 +227,29 @@ int mount_new(char *path, char *dev) pid = autofs_safe_fork(); if(!pid) { - if(mount->fs == EXFAT) + if(mount->fs > MBR && mount->fs <= EXT4) { - log_printf("mount -t exfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t exfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); - } - if(mount->fs == FAT) - { - log_printf("mount -t vfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t vfat -o rw,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); - } - if(mount->fs == EXT4) - { - log_printf("mount -t ext4 -o rw,defaults /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t ext4 -o rw,defaults /dev/%s %s", mount->dev, tmp); - } - if(mount->fs == EXT3) - { - log_printf("mount -t ext3 -o rw,defaults /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t ext3 -o rw,defaults /dev/%s %s", mount->dev, tmp); - } - if(mount->fs == EXT2) - { - log_printf("mount -t ext2 -o rw,defaults /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t ext2 -o rw,defaults /dev/%s %s", mount->dev, tmp); - } - if(mount->fs == HFSPLUS) - { - log_printf("mount -t hfsplus -o rw,defaults,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); - ret = system_printf("mount -t hfsplus -o rw,defaults,uid=1000,gid=1000 /dev/%s %s", mount->dev, tmp); - } - if(mount->fs == NTFS) - { - log_printf("ntfs-3g /dev/%s %s -o force", mount->dev, tmp); - ret = system_printf("ntfs-3g /dev/%s %s -o force", mount->dev, tmp); + struct uci_context *ctx; + char *options, *fstype; + ctx = ucix_init("mountd"); + options = ucix_get_option(ctx, "mountd", fs_names[mount->fs], "options"); + fstype = ucix_get_option(ctx, "mountd", fs_names[mount->fs], "fstype"); + ucix_cleanup(ctx); + if(!fstype) + { + log_printf("mounting /dev/%s failed, expecting 'fstype' uci parameter (kernel driver) for %s", mount->dev, fs_names[mount->fs]); + } else { + if(!options) + { + log_printf("mount -t %s /dev/%s %s", fstype, mount->dev, tmp); + ret = system_printf("mount -t %s /dev/%s %s", fstype, mount->dev, tmp); + } else { + log_printf("mount -t %s -o %s /dev/%s %s", fstype, options, mount->dev, tmp); + ret = system_printf("mount -t %s -o %s /dev/%s %s", fstype, options, mount->dev, tmp); + } + } + exit(WEXITSTATUS(ret)); } - exit(WEXITSTATUS(ret)); } pid = waitpid(pid, &ret, 0); ret = WEXITSTATUS(ret);