]> sourceware.org Git - lvm2.git/commit
pvscan: retry VG refresh before autoactivation if it fails
authorPeter Rajnoha <prajnoha@redhat.com>
Tue, 12 Nov 2013 09:55:34 +0000 (10:55 +0100)
committerPeter Rajnoha <prajnoha@redhat.com>
Tue, 12 Nov 2013 10:09:45 +0000 (11:09 +0100)
commitd8085edf65006a50608edb821b3d30947abaa838
tree49a7a4ecc811e4bc560ec469955387d562d81479
parent7de533ad12972f5a9c5bf2d2b477d8320f7e4a8e
pvscan: retry VG refresh before autoactivation if it fails

There's a tiny race when suspending the device which is part
of the refresh because when suspend ioctl is performed, the
dm kernel driver executes (do_suspend and dm_suspend kernel fn):

  step 1: a check whether the dev is already suspended and
          if yes it returns success immediately as there's
          nothing to do
  step 2: it grabs the suspend lock
  step 3: another check whether the dev is already suspended
          and if found suspended, it exits with -EINVAL now

The race can occur in between step 1 and step 2. To prevent
premature autoactivation failure, we're using a simple retry
logic here before we fail completely. For a complete solution,
we need to fix the locking so there's no possibility for suspend
calls to interleave each other to cause this kind of race.

This is just a workaround. Remove it and replace it with proper
locking once we have that in!
WHATS_NEW
tools/pvscan.c
This page took 0.038682 seconds and 5 git commands to generate.