Commit 08837c63 authored by Andrey Vagin's avatar Andrey Vagin Committed by Pavel Emelyanov

dump: fix parsing of /proc/locks

is_blocked should be determined for each line independently.

For example:
1: POSIX  ADVISORY  WRITE 1974 fd:01:392012 0 EOF
2: POSIX  ADVISORY  WRITE 1974 fd:01:392011 0 EOF
3: POSIX  ADVISORY  WRITE 1698 fd:01:1196619 0 EOF
4: POSIX  ADVISORY  WRITE 1698 fd:01:1196620 0 EOF
5: POSIX  ADVISORY  WRITE 1698 fd:01:1196621 0 EOF
6: POSIX  ADVISORY  WRITE 1689 fd:01:1429204 0 EOF
7: POSIX  ADVISORY  WRITE 1690 fd:01:1429202 0 EOF
8: POSIX  ADVISORY  WRITE 1690 fd:01:1429201 0 0
8: -> POSIX  ADVISORY  WRITE 1701 fd:01:1429201 0 0
9: POSIX  ADVISORY  WRITE 1688 fd:01:1429206 0 EOF
10: FLOCK  ADVISORY  WRITE 1694 fd:01:1196520 0 EOF
11: POSIX  ADVISORY  WRITE 862 00:0f:12421 0 EOF
12: POSIX  ADVISORY  WRITE 846 00:0f:12377 0 EOF
13: FLOCK  ADVISORY  WRITE 821 00:0f:11378 0 EOF
14: POSIX  ADVISORY  WRITE 459 00:0f:9826 0 EOF
15: POSIX  ADVISORY  WRITE 511 00:0f:10413 0 EOF

Without this patch crtools returns the error:
(00.000613) Error (proc_parse.c:1089): Invalid file lock info!

It's because is_blocked is set in "true" for the line 8 and
it becomes "true" for the line 9.
Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 8afd8a4c
......@@ -1086,7 +1086,7 @@ static int parse_file_lock_buf(char *buf, struct file_lock *fl,
}
if (num < 10) {
pr_perror("Invalid file lock info!");
pr_perror("Invalid file lock info: %s", buf);
return -1;
}
......@@ -1099,7 +1099,7 @@ int parse_file_locks(void)
FILE *fl_locks;
int ret = 0;
bool is_blocked = false;
bool is_blocked;
fl_locks = fopen("/proc/locks", "r");
if (!fl_locks) {
......@@ -1108,8 +1108,7 @@ int parse_file_locks(void)
}
while (fgets(buf, BUF_SIZE, fl_locks)) {
if (strstr(buf, "->"))
is_blocked = true;
is_blocked = strstr(buf, "->") != NULL;
fl = alloc_file_lock();
if (!fl) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment