Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:Update
mdadm.1500
0001-Manage-simplify-rdev-handling-in-Manage_su...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-Manage-simplify-rdev-handling-in-Manage_subdevs.patch of Package mdadm.1500
From 5dffd09d24c3dcc690677910219254e0703503e3 Mon Sep 17 00:00:00 2001 From: NeilBrown <neilb@suse.de> Date: Mon, 11 Aug 2014 10:22:24 +1000 Subject: [PATCH 1/3] Manage: simplify `rdev` handling in Manage_subdevs. The only use 'struct stat stb' to get the 'rdev', and sometimes we don't even use 'stat'. So make 'rdev' a stand-alone variable, and only declare stb' when we actually need it. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Coly Li <colyli@suse.de> --- Manage.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) --- a/Manage.c +++ b/Manage.c @@ -1284,7 +1284,6 @@ int Manage_subdevs(char *devname, int fd mdu_array_info_t array; unsigned long long array_size; struct mddev_dev *dv; - struct stat stb; int tfd = -1; struct supertype *tst; char *subarray = NULL; @@ -1316,8 +1315,8 @@ int Manage_subdevs(char *devname, int fd goto abort; } - stb.st_rdev = 0; for (dv = devlist; dv; dv = dv->next) { + unsigned long rdev = 0; /* device to add/remove etc */ int rv; if (strcmp(dv->devname, "failed") == 0 || @@ -1414,7 +1413,7 @@ int Manage_subdevs(char *devname, int fd int mj,mn; if (sysfs_fd_get_str(sysfd, dn, 20) > 0 && sscanf(dn, "%d:%d", &mj,&mn) == 2) { - stb.st_rdev = makedev(mj,mn); + rdev = makedev(mj,mn); found = 1; } close(sysfd); @@ -1430,6 +1429,7 @@ int Manage_subdevs(char *devname, int fd } } } else { + struct stat stb; tfd = dev_open(dv->devname, O_RDONLY); if (tfd >= 0) fstat(tfd, &stb); @@ -1462,6 +1462,7 @@ int Manage_subdevs(char *devname, int fd goto abort; } } + rdev = stb.st_rdev; } switch(dv->disposition){ default: @@ -1484,8 +1485,7 @@ int Manage_subdevs(char *devname, int fd /* Need to remove first */ int err; do { - err = ioctl(fd, HOT_REMOVE_DISK, - (unsigned long)stb.st_rdev); + err = ioctl(fd, HOT_REMOVE_DISK, rdev); } while (err && errno == EBUSY && force && usleep(50000) == 0); } /* Make sure it isn't in use (in 2.6 or later) */ @@ -1513,7 +1513,7 @@ int Manage_subdevs(char *devname, int fd } rv = Manage_add(fd, tfd, dv, tst, &array, force, verbose, devname, update, - stb.st_rdev, array_size); + rdev, array_size); close(tfd); tfd = -1; if (rv < 0) @@ -1531,7 +1531,7 @@ int Manage_subdevs(char *devname, int fd rv = -1; } else rv = Manage_remove(tst, fd, dv, sysfd, - stb.st_rdev, verbose, force, + rdev, verbose, force, devname); if (sysfd >= 0) close(sysfd); @@ -1546,7 +1546,7 @@ int Manage_subdevs(char *devname, int fd /* FIXME check current member */ if ((sysfd >= 0 && write(sysfd, "faulty", 6) != 6) || (sysfd < 0 && ioctl(fd, SET_DISK_FAULTY, - (unsigned long) stb.st_rdev))) { + rdev))) { if (errno == EBUSY) busy = 1; pr_err("set device faulty failed for %s: %s\n", @@ -1577,7 +1577,7 @@ int Manage_subdevs(char *devname, int fd frozen = -1; } rv = Manage_replace(tst, fd, dv, - stb.st_rdev, verbose, + rdev, verbose, devname); } if (rv < 0) @@ -1591,7 +1591,7 @@ int Manage_subdevs(char *devname, int fd goto abort; case 'w': /* --with device which was matched */ rv = Manage_with(tst, fd, dv, - stb.st_rdev, verbose, devname); + rdev, verbose, devname); if (rv < 0) goto abort; break;
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