Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:lnussel:usrmerge
mdadm
0031-DDF-Cleanup-validate_geometry_ddf_containe...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0031-DDF-Cleanup-validate_geometry_ddf_container.patch of Package mdadm
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
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor