mirror of
https://github.com/ceph/ceph
synced 2025-01-21 02:31:19 +00:00
rbd: switch to strict_strtol for major parsing
Use common/strict_strtol, which actually parses integers in a proper way, instead of atoi for parsing /sys/bus/rbd/devices/<id>/major. This is important, because the kernel apparently can write things like "(none)" into that file, and in general is more bulletproof. Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
This commit is contained in:
parent
71cefc2927
commit
a42130592d
@ -1895,8 +1895,15 @@ static int get_rbd_seq(int major_num, string &seq)
|
||||
<< cpp_strerror(-r) << std::endl;
|
||||
continue;
|
||||
}
|
||||
string err;
|
||||
int cur_major = strict_strtol(major, 10, &err);
|
||||
if (!err.empty()) {
|
||||
cerr << err << std::endl;
|
||||
cerr << "rbd: could not parse major number read from " << fn << ": "
|
||||
<< cpp_strerror(-r) << std::endl;
|
||||
continue;
|
||||
}
|
||||
|
||||
int cur_major = atoi(major);
|
||||
if (cur_major == major_num) {
|
||||
seq = string(dent->d_name);
|
||||
closedir(device_dir);
|
||||
|
Loading…
Reference in New Issue
Block a user