diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2014-03-07 09:25:18 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-03-07 09:25:18 +0100 |
commit | e358922a74b01e6272c77caf01bc78a8295cc7d7 (patch) | |
tree | 2148056adbec4af52d03f00eea3e9b0bd478f33c /fs | |
parent | 98615784a654f42e3914e5b401ddf24e50bdf64a (diff) | |
parent | d5e38fc91345a60566ab92ebbea238c50be7c74b (diff) | |
download | barebox-e358922a74b01e6272c77caf01bc78a8295cc7d7.tar.gz barebox-e358922a74b01e6272c77caf01bc78a8295cc7d7.tar.xz |
Merge branch 'for-next/mtd'
Conflicts:
drivers/mtd/core.c
net/eth.c
Diffstat (limited to 'fs')
-rw-r--r-- | fs/devfs-core.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/fs/devfs-core.c b/fs/devfs-core.c index 44f0169e63..bd6d482867 100644 --- a/fs/devfs-core.c +++ b/fs/devfs-core.c @@ -276,6 +276,15 @@ struct cdev *devfs_add_partition(const char *devname, loff_t offset, loff_t size if (offset + size > cdev->size) return ERR_PTR(-EINVAL); + if (IS_ENABLED(CONFIG_PARTITION_NEED_MTD) && cdev->mtd) { + struct mtd_info *mtd; + + mtd = mtd_add_partition(cdev->mtd, offset, size, flags, name); + if (IS_ERR(mtd)) + return (void *)mtd; + return 0; + } + new = xzalloc(sizeof (*new)); new->name = strdup(name); if (!strncmp(devname, name, strlen(devname))) @@ -287,17 +296,6 @@ struct cdev *devfs_add_partition(const char *devname, loff_t offset, loff_t size new->dev = cdev->dev; new->flags = flags | DEVFS_IS_PARTITION; -#ifdef CONFIG_PARTITION_NEED_MTD - if (cdev->mtd) { - new->mtd = mtd_add_partition(cdev->mtd, offset, size, flags, name); - if (IS_ERR(new->mtd)) { - int ret = PTR_ERR(new->mtd); - free(new); - return ERR_PTR(ret); - } - } -#endif - devfs_create(new); return new; @@ -312,16 +310,16 @@ int devfs_del_partition(const char *name) if (!cdev) return -ENOENT; + if (IS_ENABLED(CONFIG_PARTITION_NEED_MTD) && cdev->mtd) { + ret = mtd_del_partition(cdev->mtd); + return ret; + } + if (!(cdev->flags & DEVFS_IS_PARTITION)) return -EINVAL; if (cdev->flags & DEVFS_PARTITION_FIXED) return -EPERM; -#ifdef CONFIG_PARTITION_NEED_MTD - if (cdev->mtd) - mtd_del_partition(cdev->mtd); -#endif - ret = devfs_remove(cdev); if (ret) return ret; |