Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp1959841imm; Fri, 7 Sep 2018 08:42:24 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZFZKmM3BGaxzGEi+ZXqxnh6xDSxP9Sy8trkq9M0+DZlZg/YOZBeDfIj9Z1LZmslyNvzz3C X-Received: by 2002:a63:706:: with SMTP id 6-v6mr8669741pgh.137.1536334944268; Fri, 07 Sep 2018 08:42:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536334944; cv=none; d=google.com; s=arc-20160816; b=B2rqlP2E3G1zJD+gdDN6SMr4U+YtBU0Oa3ybaNGIqOYzcNAoz8mMUPPR7tzJbZRNiu On5JqvsvExns24v/+rSrQOfdWaI4kPSWRrOY9r4WPbESBKMc1TTqaC8/4kFYMnyfE72N hWV6E/7X6xF6+sruOmPB9p4KHmSzsS5OE+rtPMe0ML0e+af3ryT6KYt9dw+saleovlFN EKexQyml/04RF5dvm0AEEJuwGpRVLAcgfxwy0ioEiNjgVtggXvaXqZ9+DGpDDqwfutJS WGtCSohIG/pmW6Puca12KbDHwmsqTnCA9MTrBBLGH4V3/uF6A5uGaaV2k3f8ikVffBsD eb0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:mail-followup-to :message-id:subject:cc:to:from:date:dkim-signature; bh=U37lJ+prfQJVQLgrPWTUPiIbn6AtqisWG8MdHj+iU+w=; b=WPb55bv6ufgYl55EKrxVtvWi63Q6EKe3yZFs3jVtj730Oh4YuBOmcZ2dOG4SfhAz3n 72VaaeMnTTUxfzqF7NzYZwySzaPewh86bdD/dnDaYrl3XysOsZHny1EUtnLmDN8oL/HO DBj9RhRjypQFoqysfa/W5JJwE85x2AVUI1SIZH12UUyk8+07kneRIlxQc0gDbOuYxKHv qbytNHn3M1GZo/JyopCNz53wotiwqZQ5Htnmfg3DHgUGT+B/nuHHr7VR6Pk3FWAMAfUo Ecs5IEdh6DuSpBqQn+XG2ZYCJ6KB05nWeEn6IyxnOnktAnWVvBbaroiAJqwpboSiNvUj bOGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linbit-com.20150623.gappssmtp.com header.s=20150623 header.b=sOnxnz2s; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y86-v6si9112958pfi.195.2018.09.07.08.42.08; Fri, 07 Sep 2018 08:42:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linbit-com.20150623.gappssmtp.com header.s=20150623 header.b=sOnxnz2s; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728935AbeIGSJb (ORCPT + 99 others); Fri, 7 Sep 2018 14:09:31 -0400 Received: from mail-wr1-f67.google.com ([209.85.221.67]:38133 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728524AbeIGSJb (ORCPT ); Fri, 7 Sep 2018 14:09:31 -0400 Received: by mail-wr1-f67.google.com with SMTP id w11-v6so15002681wrc.5 for ; Fri, 07 Sep 2018 06:28:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linbit-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to:user-agent; bh=U37lJ+prfQJVQLgrPWTUPiIbn6AtqisWG8MdHj+iU+w=; b=sOnxnz2sq437gQTSAS2lO+BoIMOJCwJD3OmovVoUrO45654BIBCM9rDbIOknPAW36a FMys2yNuIG7V6dITkdolwx+Nagdz3k7WIoy7iypeIDnAUQKwTN1FN25t2nOCr7zhtniM EDSZcovS/V2yBGIOfdKgAD4VruioNGG2WIBXDViZVnQBJw3nqgHhFpaVDxorGdFm9mns McG6BDqCe7hLXqSWFRAGbQ1siX2km93GaPKRa8Iunt5Wae+F9RvvyEeEMMgqPXaU15HW pCRed8UifAUBxnQm3IPZnhVgH7bu97mWvKWSOUVoVyY4WM8aHQ80HyOADkOXtHUYSXo6 /Qcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to:user-agent; bh=U37lJ+prfQJVQLgrPWTUPiIbn6AtqisWG8MdHj+iU+w=; b=Eq+dwaTi4Xpf/lQuESJz9NJevIYuNsyIN8XKKwAaVnlacA+AoQvq3yXE53yoeQFpge 3ISKc5dVCMUlH7g/icqh6+n3ecXDlQcBwoSHbeb/q/q72o1CjPsScIWhfRTDvF9R4atY RJWkzzHzQuxEEZ2rpXVZG+qjmcVsEsUsNwFkiWEI75fY/fE/ApKV7DbSctRORGm4QuMT +HGPTTvPBENSlgOeusM3NtskPpNsxP4bEbmGBWx5YuAZMmSMsrwyr+Qgc+Ka+ugf3Ypi m5daVZwlLTJEbSyC5E2psJTDEY4mg44etGhnGClpkQfEg4hZ8iGcapCsaG9xht0199fW 3LGA== X-Gm-Message-State: APzg51BkuM9y9CBYDT3kzTDo9cxtVfU0S/mDhLq77ZrdMHUpkQZPwaYI 6k8rFQwh+C+hhvRDLReDvHncgg== X-Received: by 2002:adf:9a46:: with SMTP id z64-v6mr5920857wrb.109.1536326910502; Fri, 07 Sep 2018 06:28:30 -0700 (PDT) Received: from soda.linbit (212-186-191-219.static.upcbusiness.at. [212.186.191.219]) by smtp.gmail.com with ESMTPSA id w4-v6sm13282416wro.24.2018.09.07.06.28.28 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 07 Sep 2018 06:28:29 -0700 (PDT) Date: Fri, 7 Sep 2018 15:28:28 +0200 From: Lars Ellenberg To: Valentin Vidic Cc: drbd-user@lists.linbit.com, Jens Axboe , Konrad Rzeszutek Wilk , linux-kernel@vger.kernel.org, stable@vger.kernel.org, linux-block@vger.kernel.org, xen-devel@lists.xenproject.org, Roger Pau =?iso-8859-1?Q?Monn=E9?= Subject: Re: [DRBD-user] [PATCH] xen-blkback: Switch to closed state after releasing the backing device Message-ID: <20180907132828.GC11834@soda.linbit> Mail-Followup-To: Valentin Vidic , drbd-user@lists.linbit.com, Jens Axboe , Konrad Rzeszutek Wilk , linux-kernel@vger.kernel.org, stable@vger.kernel.org, linux-block@vger.kernel.org, xen-devel@lists.xenproject.org, Roger Pau =?iso-8859-1?Q?Monn=E9?= References: <20180829065214.23546-1-Valentin.Vidic@CARNet.hr> <20180905103649.edugijsjx4v2fbxd@mac.bytemobile.com> <20180905162756.GA26705@gavran.carpriv.carnet.hr> <20180907120337.GB11834@soda.linbit> <20180907121348.GM26705@gavran.carpriv.carnet.hr> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180907121348.GM26705@gavran.carpriv.carnet.hr> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Sep 07, 2018 at 02:13:48PM +0200, Valentin Vidic wrote: > On Fri, Sep 07, 2018 at 02:03:37PM +0200, Lars Ellenberg wrote: > > Very frequently it is *NOT* the "original user", that "still" holds it > > open, but udev, or something triggered-by-udev. > > > > So double-checking the udev rules, > > or the "lvm global_filter" settings may help. > > You could instrument DRBD to log current->{pid,comm} on open and close, > > so you can better detect who the "someone" is in the message above. > > Don't think there is anything else holding the device open, because it > is possible to change state to Secondary a few seconds later. But I will > try to print those values in case anything interesting comes up. > > > Adding a small retry loop in the script may help as well. > > Yes, that is an option, but it would still leave those nasty "State > change failed" messages in the log. I guess there is no way to check > the value of DRBD device->open_cnt from userspace? We don't expose that, no. But even if we did, that would not be racefree :-) The last (or even: any?) "close" of a block device that used to be open for WRITE triggeres a udev "change" event, thus a udev run, and the minimal action will be some read-only open and ioctl from (systemd-)udev itself, more likely there also will be blkid and possibly pvscan and similar actions. All of them should be read-only openers, and all of them should be "short". But they will race with the drbd demotion. You can watch that happen with # udevadm monitor & then open and close for write: # : > /dev/sda (or any other block device ...) To excercise the drbd vs udev race, (you can leave the udevadm monitor running if you want): ## clear dmesg # dmesg -c > /dev/null ## promote # drbdadm primary s0 ; ## open/close for write # : > /dev/drbd0 ; ## the close has triggered a udev run, ## which will now race with demotion, ## which will "sometimes" fail: # drbdadm secondary s0 ; ## wait a bit, and retry # sleep 1; drbdadm secondary s0 ; dmesg ### --- example output on some test box right now: ---------------- @root@ava:~# udevadm monitor & ... monitor will print the received events for: UDEV - the event which udev sends out after rule processing KERNEL - the kernel uevent ... @root@ava:~# dmesg -c > /dev/null; drbdadm primary s0 ; : > /dev/drbd0 ; drbdadm secondary s0 ; sleep 1; drbdadm secondary s0 ; dmesg KERNEL[609638.990320] change /devices/virtual/block/drbd0 (block) KERNEL[609638.991364] change /devices/virtual/block/drbd0 (block) UDEV [609639.008879] change /devices/virtual/block/drbd0 (block) 0: State change failed: (-12) Device is held open by someone Command 'drbdsetup-84 secondary 0' terminated with exit code 11 UDEV [609639.011652] change /devices/virtual/block/drbd0 (block) KERNEL[609640.017356] change /devices/virtual/block/drbd0 (block) KERNEL[609640.018074] change /devices/virtual/block/drbd0 (block) [609613.882751] block drbd0: role( Secondary -> Primary ) [609613.889998] block drbd0: State change failed: Device is held open by someone [609613.894280] block drbd0: state = { cs:WFConnection ro:Primary/Unknown ds:UpToDate/Outdated r----- } [609613.897609] block drbd0: wanted = { cs:WFConnection ro:Secondary/Unknown ds:UpToDate/Outdated r----- } [609614.909537] block drbd0: role( Primary -> Secondary ) [609614.909662] block drbd0: 0 KB (0 bits) marked out-of-sync by on disk bit-map. UDEV [609640.024588] change /devices/virtual/block/drbd0 (block) UDEV [609640.028731] change /devices/virtual/block/drbd0 (block) @root@ava:~# ### -------------------------------------------------------------- Obviously change s0 and drbd0 appropriately; to exactly hit the time window where udev has it open may be tricky, and on a busy system even the sleep 1 can be not enough (so even the second invocation may fail still), on an idle system udev may already be done, or may not even have started yet when the first "secondary" runs. Your best bet is to review your udev rules, and make sure "drbd*" will not be looked at by blkid or pvscan or similar. See also: https://github.com/systemd/systemd/commit/fee854ee8ccde respectively https://github.com/systemd/systemd/issues/9371 to get rid even of the unconditional open by systemd-udevd itself. Note, I'm not saying blkback has no issue; I don't know. I'm just pointing out that there are other things that may cause the same effects. Lars