145 lines
3.9 KiB
Diff
145 lines
3.9 KiB
Diff
From 679bd9508a30b2a0a1baecc9a21dd6c7d8d8d7dc Mon Sep 17 00:00:00 2001
|
|
From: Logan Gunthorpe <logang@deltatee.com>
|
|
Date: Wed, 22 Jun 2022 14:25:07 -0600
|
|
Subject: [PATCH 32/61] DDF: Cleanup validate_geometry_ddf_container()
|
|
Patch-mainline: mdadm-4.2+
|
|
References: jsc#PED-1009
|
|
|
|
Move the function up so that the function declaration is not necessary
|
|
and remove the unused arguments to the function.
|
|
|
|
No functional changes are intended but will help with a bug fix in the
|
|
next patch.
|
|
|
|
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
|
|
Acked-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
|
Signed-off-by: Jes Sorensen <jes@trained-monkey.org>
|
|
Signed-off-by: Coly Li <colyli@suse.de>
|
|
---
|
|
super-ddf.c | 88 ++++++++++++++++++++++++-----------------------------
|
|
1 file changed, 39 insertions(+), 49 deletions(-)
|
|
|
|
diff --git a/super-ddf.c b/super-ddf.c
|
|
index abbc8b0..9d867f6 100644
|
|
--- a/super-ddf.c
|
|
+++ b/super-ddf.c
|
|
@@ -503,13 +503,6 @@ struct ddf_super {
|
|
static int load_super_ddf_all(struct supertype *st, int fd,
|
|
void **sbp, char *devname);
|
|
static int get_svd_state(const struct ddf_super *, const struct vcl *);
|
|
-static int
|
|
-validate_geometry_ddf_container(struct supertype *st,
|
|
- int level, int layout, int raiddisks,
|
|
- int chunk, unsigned long long size,
|
|
- unsigned long long data_offset,
|
|
- char *dev, unsigned long long *freesize,
|
|
- int verbose);
|
|
|
|
static int validate_geometry_ddf_bvd(struct supertype *st,
|
|
int level, int layout, int raiddisks,
|
|
@@ -3322,6 +3315,42 @@ static int reserve_space(struct supertype *st, int raiddisks,
|
|
return 1;
|
|
}
|
|
|
|
+static int
|
|
+validate_geometry_ddf_container(struct supertype *st,
|
|
+ int level, int raiddisks,
|
|
+ unsigned long long data_offset,
|
|
+ char *dev, unsigned long long *freesize,
|
|
+ int verbose)
|
|
+{
|
|
+ int fd;
|
|
+ unsigned long long ldsize;
|
|
+
|
|
+ if (level != LEVEL_CONTAINER)
|
|
+ return 0;
|
|
+ if (!dev)
|
|
+ return 1;
|
|
+
|
|
+ fd = dev_open(dev, O_RDONLY|O_EXCL);
|
|
+ if (fd < 0) {
|
|
+ if (verbose)
|
|
+ pr_err("ddf: Cannot open %s: %s\n",
|
|
+ dev, strerror(errno));
|
|
+ return 0;
|
|
+ }
|
|
+ if (!get_dev_size(fd, dev, &ldsize)) {
|
|
+ close(fd);
|
|
+ return 0;
|
|
+ }
|
|
+ close(fd);
|
|
+ if (freesize) {
|
|
+ *freesize = avail_size_ddf(st, ldsize >> 9, INVALID_SECTORS);
|
|
+ if (*freesize == 0)
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ return 1;
|
|
+}
|
|
+
|
|
static int validate_geometry_ddf(struct supertype *st,
|
|
int level, int layout, int raiddisks,
|
|
int *chunk, unsigned long long size,
|
|
@@ -3347,11 +3376,9 @@ static int validate_geometry_ddf(struct supertype *st,
|
|
level = LEVEL_CONTAINER;
|
|
if (level == LEVEL_CONTAINER) {
|
|
/* Must be a fresh device to add to a container */
|
|
- return validate_geometry_ddf_container(st, level, layout,
|
|
- raiddisks, *chunk,
|
|
- size, data_offset, dev,
|
|
- freesize,
|
|
- verbose);
|
|
+ return validate_geometry_ddf_container(st, level, raiddisks,
|
|
+ data_offset, dev,
|
|
+ freesize, verbose);
|
|
}
|
|
|
|
if (!dev) {
|
|
@@ -3449,43 +3476,6 @@ static int validate_geometry_ddf(struct supertype *st,
|
|
return 1;
|
|
}
|
|
|
|
-static int
|
|
-validate_geometry_ddf_container(struct supertype *st,
|
|
- int level, int layout, int raiddisks,
|
|
- int chunk, unsigned long long size,
|
|
- unsigned long long data_offset,
|
|
- char *dev, unsigned long long *freesize,
|
|
- int verbose)
|
|
-{
|
|
- int fd;
|
|
- unsigned long long ldsize;
|
|
-
|
|
- if (level != LEVEL_CONTAINER)
|
|
- return 0;
|
|
- if (!dev)
|
|
- return 1;
|
|
-
|
|
- fd = dev_open(dev, O_RDONLY|O_EXCL);
|
|
- if (fd < 0) {
|
|
- if (verbose)
|
|
- pr_err("ddf: Cannot open %s: %s\n",
|
|
- dev, strerror(errno));
|
|
- return 0;
|
|
- }
|
|
- if (!get_dev_size(fd, dev, &ldsize)) {
|
|
- close(fd);
|
|
- return 0;
|
|
- }
|
|
- close(fd);
|
|
- if (freesize) {
|
|
- *freesize = avail_size_ddf(st, ldsize >> 9, INVALID_SECTORS);
|
|
- if (*freesize == 0)
|
|
- return 0;
|
|
- }
|
|
-
|
|
- return 1;
|
|
-}
|
|
-
|
|
static int validate_geometry_ddf_bvd(struct supertype *st,
|
|
int level, int layout, int raiddisks,
|
|
int *chunk, unsigned long long size,
|
|
--
|
|
2.35.3
|
|
|