/
githubmirror
/
device-mapper-multipath
Обзор
Документация
Войти
/
githubmirror
/
device-mapper-multipath
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
0019-RHBZ-554598-fix-multipath-locking.patch
43 строки
1 KB
Ivan Makfinsky
srpm imported for 'GoOSe Linux 6.0
07 дек 2011, 19:36
07 дек 2011, 19:36
4613d8f
Код
Авторство
О чём код?
--- libmultipath/configure.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) Index: multipath-tools/libmultipath/configure.c =================================================================== --- multipath-tools.orig/libmultipath/configure.c +++ multipath-tools/libmultipath/configure.c @@ -284,6 +284,7 @@ lock_multipath (struct multipath * mpp, struct pathgroup * pgp; struct path * pp; int i, j; + int x, y; if (!mpp || !mpp->pg) return 0; @@ -294,12 +295,25 @@ lock_multipath (struct multipath * mpp, vector_foreach_slot(pgp->paths, pp, j) { if (lock && flock(pp->fd, LOCK_EX | LOCK_NB) && errno == EWOULDBLOCK) - return 1; + goto fail; else if (!lock) flock(pp->fd, LOCK_UN); } } return 0; +fail: + vector_foreach_slot (mpp->pg, pgp, x) { + if (x > i) + return 1; + if (!pgp->paths) + continue; + vector_foreach_slot(pgp->paths, pp, y) { + if (x == i && y > j) + return 1; + flock(pp->fd, LOCK_UN); + } + } + return 1; } /*