fs: dlm: return positive pid value for F_GETLK
authorAlexander Aring <aahringo@redhat.com>
Fri, 19 May 2023 15:21:24 +0000 (11:21 -0400)
committerDavid Teigland <teigland@redhat.com>
Mon, 22 May 2023 18:34:47 +0000 (13:34 -0500)
The GETLK pid values have all been negated since commit 9d5b86ac13c5
("fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks").
Revert this for local pids, and leave in place negative pids for remote
owners.

Cc: stable@vger.kernel.org
Fixes: 9d5b86ac13c5 ("fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks")
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/plock.c

index ed4357e62f35f9b072c2f3a93c2ab75f9e2fab49..ff364901f22b1d1cfa3a1b0ef15745c6ad889fc8 100644 (file)
@@ -360,7 +360,9 @@ int dlm_posix_get(dlm_lockspace_t *lockspace, u64 number, struct file *file,
                locks_init_lock(fl);
                fl->fl_type = (op->info.ex) ? F_WRLCK : F_RDLCK;
                fl->fl_flags = FL_POSIX;
-               fl->fl_pid = -op->info.pid;
+               fl->fl_pid = op->info.pid;
+               if (op->info.nodeid != dlm_our_nodeid())
+                       fl->fl_pid = -fl->fl_pid;
                fl->fl_start = op->info.start;
                fl->fl_end = op->info.end;
                rv = 0;