diff options
author | Johann Latocha | 2012-02-06 17:37:01 +0100 |
---|---|---|
committer | Johann Latocha | 2012-02-06 17:37:01 +0100 |
commit | 7c066f7d6d72154d0f5ef746b14190a5ad54421b (patch) | |
tree | fce14eed881524af6346577232126b97001bb476 /src/server/utils.c | |
parent | [KERNEL] Segfault at closing device fixed (diff) | |
download | dnbd3-7c066f7d6d72154d0f5ef746b14190a5ad54421b.tar.gz dnbd3-7c066f7d6d72154d0f5ef746b14190a5ad54421b.tar.xz dnbd3-7c066f7d6d72154d0f5ef746b14190a5ad54421b.zip |
[ALL] Request latest available rid
Diffstat (limited to 'src/server/utils.c')
-rw-r--r-- | src/server/utils.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/server/utils.c b/src/server/utils.c index 67d91c9..34da129 100644 --- a/src/server/utils.c +++ b/src/server/utils.c @@ -76,14 +76,23 @@ void dnbd3_reload_config(char* config_file_name) dnbd3_image_t* dnbd3_get_image(int vid, int rid) { - // TODO: find better data structure + int i, max = 0; dnbd3_image_t *result = NULL; - int i; for (i = 0; i < _num_images; ++i) { - if (_images[i].vid == vid && _images[i].rid == rid) - result = &_images[i]; - + if (rid != 0) // rid was specified + { + if (_images[i].vid == vid && _images[i].rid == rid) + result = &_images[i]; + } + else // search max. rid available + { + if (_images[i].vid == vid && _images[i].rid > max) + { + result = &_images[i]; + max = _images[i].rid; + } + } } return result; } |