From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01BCD23393D for ; Thu, 11 Jun 2026 13:25:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781184307; cv=none; b=B18oNCd9v7Man9iZp5qYj6KK0MgZs/ItT4On80+hAkRB2JkeDKl4adE3O5Po/ha2Q5gtthc4dNzWIx5js4CoSnRLAiiCfMfOtSougnSryYwYsuS5N1IOBKb+/dWX7qadGnvFkn3gNNATRiFk737p3eJzH0rXq4AJKEeHMM9ntLs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781184307; c=relaxed/simple; bh=BAMEiUiopOcpdnGhnvapHqJfRaDABZc555dgBdJXTz0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=OmMt4Ig19QZDJr02hs94/dvXNrOat27A5hSwwejM8e5zqeK9XKSzwGrh2a7ejs1Rgb+e+QQfSOefJS9jhozrpFBI5Nq3M4FbW1w72qfteWqOmY/Ar51X0pqPDSfNvy0mI5oG9l9SVtXA10TRuvV8+14FlpA9wZAAI+7T4kPI578= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=eZkO0I+I; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eZkO0I+I" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-490b64c8311so86980215e9.3 for ; Thu, 11 Jun 2026 06:25:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781184304; x=1781789104; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=owt/z5np0YVYSdI1cK0JnJY4WIKgIAsBPKeWf8hMHBs=; b=eZkO0I+I2UkmBe2kHiIMOffUC4z1uZnVjQuJNHZ95UCMWgLxXutoQyGeudWPakc58s Ppct0YQh6Ni4DUZc80oJ72NsANyGFmglbB6uAX8BgS1pzPq/UoLAynIwwox3uJ9eDXrq PI7KjlSA8GgkHIvtQT/eXnAZvo1Z1KrSzMEWE/ACBaJLWv316WBq0bSsI6x6kQ7ihDlf hlQgyoLMkpLRGkXUH1rzmVzDL+3w2ohtV/F+PvH3DJRxDKNXVgX59jOylqTE0xFfkP4H ZyWzJp0n9aqx0l9APFPZPBykT8jC/hI8qHRVzrVlJAu5HULlnZjzlUPers1ezMCSWOSm 8t5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781184304; x=1781789104; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=owt/z5np0YVYSdI1cK0JnJY4WIKgIAsBPKeWf8hMHBs=; b=kBnmYHmuA1TdejnkIhDMA7eLEkizShSoVMCjiQbb69qIrGTOFPwipDC/82pdjpLALM OTkSIJNO7S0sGytmO8Aeq7LYafHGJ/HjbaEw+GYpxBOEPWNpqIdGQBxJA9PrFvP86hhN eXhcCa7MYsLvVH54wAMF9uwXb6fXpVahMiedESijBtmvDBzA66ut6UKvFLylFmzY0iqt eR21v2Ey//xfzBSI5wIySCzq3QukzMKmMGq958vTye1y++lPuY3XMQYY+EdUiuor+lVw gh5v07ZdsETh/r4oAuPxlHM9z1nGfYP15MDW3soZYhD79MDD7/JT7LjA5xV1sdUcpjSf GrRw== X-Forwarded-Encrypted: i=1; AFNElJ+Ms19p+zfkn9m6/BuU3WGBMaZCtA5WNYYgJFW6dYh9UXU33igT7zxEFWu8FSn9Mpd3LAJGJQhoPbTeCzg=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5jB7eidVK+PPxATAuvoMLjmWJr99vzuCP8fvRd2arEDefuThK o5wHcThSf5h0KD83U8qTPAIrMzTR3dM9WQEC1qML2fjOhzcwqkIJckxa X-Gm-Gg: Acq92OHxg34U66Wn74qhOSkpbn0Sk4gk6Z4DERhljqp6s2cmoFhz62WECj3yodJW5+E 0NMArTiCMLH1bn4N8TlrDRbb+3ty4AtjNGbb57KLPiiS3PHGZvhSfuSt8310ZVl8n+OX0/3YQoz iQZTMvhI4AWXy9T4Ro1OYYk633TmvtxZuaiYaLdQQyhS3dNiEtvG6qkG+v/ZuibODsMAyrj+0Ez McCFPp8hYv+g7e/5v/As6zgpjBY2Ra3CMNFGU/6+C7IaFhUqs44gK/58CFvcWTubPuAYFPUqUIH 92kCK5WOlDIS2i5t1eV4ZMPEKBYTHPuMDMTkQgEJZWSxu25GscxiPQy6ZnFqToHj6/K78tsgzL3 qG/S1kP+Vo2Whur9jXRWNWuw+5cofec7OcC5ALUcZkLg4X8/PnZ2iLgcT+JrIYegLPvbV3GOWKu BO0sjaAnM4lSGrFuLGJjTz3Lez9ZglDItdqQbRFPMfIjYivhgvs6r09g== X-Received: by 2002:a05:600c:3e8f:b0:48f:d612:3c59 with SMTP id 5b1f17b1804b1-490e55cdef4mr39242575e9.9.1781184304071; Thu, 11 Jun 2026 06:25:04 -0700 (PDT) Received: from yocto.rz.uni-frankfurt.de ([141.2.113.162]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490e2c7ead0sm73770415e9.3.2026.06.11.06.25.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2026 06:25:03 -0700 (PDT) From: Abd-Alrhman Masalkhi To: song@kernel.org, yukuai@fygo.io, magiclinan@didiglobal.com, xiao@kernel.org Cc: linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, Abd-Alrhman Masalkhi , sashiko-bot Subject: [PATCH] md/raid1: release barrier when REQ_NOWAIT write would block Date: Thu, 11 Jun 2026 13:25:00 +0000 Message-ID: <20260611132500.763528-1-abd.masalkhi@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit raid1_write_request() calls wait_barrier(), which raises conf->nr_pending, before calling wait_blocked_rdev(). When wait_blocked_rdev() fails for a REQ_NOWAIT write, the bio is completed and the function returns without calling allow_barrier(), leaking the nr_pending reference taken by wait_barrier(). freeze_array() waits for nr_pending to drop to zero, so a leaked reference prevents the array from ever being frozen again. Any later operation that freezes the array then hangs, including resync, reshape, device removal and array teardown. Release the barrier on the REQ_NOWAIT failure path. Fixes: 88ed59c4cc6c ("md/raid1: factor out helper to handle blocked rdev from raid1_write_request()") Reported-by: sashiko-bot Closes: https://sashiko.dev/#/patchset/20260611083514.754922-1-abd.masalkhi@gmail.com?part=1 Signed-off-by: Abd-Alrhman Masalkhi --- drivers/md/raid1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 6263a1d45f86..e9086ba1f796 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -1522,6 +1522,7 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio, int max_sectors; bool write_behind = false; bool is_discard = (bio_op(bio) == REQ_OP_DISCARD); + sector_t sector = bio->bi_iter.bi_sector; if (mddev_is_clustered(mddev) && mddev->cluster_ops->area_resyncing(mddev, WRITE, @@ -1550,6 +1551,7 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio, if (!wait_blocked_rdev(mddev, bio)) { bio_wouldblock_error(bio); + allow_barrier(conf, sector); return; } -- 2.43.0