From nobody Sat Jul 25 03:47:43 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 A0DC439D6FF for ; Sun, 19 Jul 2026 14:44:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784472258; cv=none; b=G0XgHoph7yq/vtZ4AHg7CZJdSvplSq9WlKlaRsa+XpYbC/5TJwXZcfiqwXn6Ri4ctI8iC/oyutBV1L+T3UYpMseHu4NHp2bS0GMXndkF1ZXpKln28QoLVTGbG9sI6dJn+7iR5xKf2Hz9yFtOV0VzYKxEYDgohRP50Gr8o7h95zI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784472258; c=relaxed/simple; bh=9op5tZbQu39Vzy3AVcyVGUrajiK8Qqr69bzJqzZwd+Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gSFRygDdmhsW+Grj268GKOS2WJn2L2cfkSMM1urnTlXj8LU96J/ZnwpRKZW1AxFSgNb2udlQsQY+Z1IlkmnOCRPyL8nrbbSEm7T1Mo2qntSS8dLXMZgbq9pqVvTyGci6OEGDYUZ2epWraFByq+8DPqBcxqG2egoyAkM9pr0orD8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meshstor.io; spf=pass smtp.mailfrom=meshstor.io; dkim=pass (2048-bit key) header.d=meshstor.io header.i=@meshstor.io header.b=dsVk2XDh; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meshstor.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meshstor.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meshstor.io header.i=@meshstor.io header.b="dsVk2XDh" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4954a2e73a9so13334565e9.3 for ; Sun, 19 Jul 2026 07:44:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meshstor.io; s=google; t=1784472255; x=1785077055; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=GpBxTmqmOVWJ4/EBs68z2UAKN7QGorTHkreALpGZ8yY=; b=dsVk2XDhbzu+o/F/6GXJzn/DuVXxvO24bCV18uY2lRkIRmT2u2tT5EUNYdATXLM9UP y3weW3cY94TgI5Z0XL3ElRAcHWJWOGS4wFCfzUzKn1DMtuw5EuOdHWoo/KKL9JQY86y0 MW5g6+XAdlN2U/o7Uh1c3OdrL8AHbspUdbojnNC1ilpPZUlIv9AvetFpmZGktJs4Rug/ 7BKmbl0Mb0U9MI0Hrl+xgW+dAS2wYgJfsUpkz0be2Air0D1OwmBXgeWSGraf2h66L1pD BP1Dqv/YQeGuHY0gHq4mVxOtEwWEy+nHOq5LY8MDkow5IL4rzqrSQMSSf2jFQnClwbmk i36Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784472255; x=1785077055; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=GpBxTmqmOVWJ4/EBs68z2UAKN7QGorTHkreALpGZ8yY=; b=RrO8sJDcSarMvC/FbV1NMicpQo8KDAfukOmPdrIlx/cFs0aPQAB47jHGq0OdTbcSGZ I9fe8DgPkp3khk97Kkc8ispjtEodTttN4Vz5n3qdV0ivonDF6CQcvyESMIIEJU7Izsnz tUxIo87bSWQoMcNZW54Qr3LquXvWD04vDUa51lcOe5F11JYiSxJOyL1AXXxE+Z8R9D4g l8mATho6Gm73ajx9GJE/I4KsVB1ykWnChY+VO8uNHwu7+eqoLWZUjc1USTbUlrh6App+ g4Wk94eX8ouoZ+VLbQ5OfaTmbFzsjYON2kmB598kjzQvgn5PSYn3nkdKJYXqYGein8KW 5Xrg== X-Forwarded-Encrypted: i=1; AHgh+RrFB7vWXIRsi8LX0tTbsOjp3nHu9eLF0oToDvUDhCo1zSi7nDrSlqp8ehowP94VqBKkuF1mW37LOJN/lZY=@vger.kernel.org X-Gm-Message-State: AOJu0YxhMFehg8I8Pqrj+5tt1i0YhEUQ/fsjX8G85r2W2r0t9G6vdok6 zE4gXLOg+vLv3V3V3jWT7CXc0HZiZ+3a7jMgOqrw5TvcaKcSkKKegGQ4IZR6Fpv0gg== X-Gm-Gg: AfdE7clctazy+tbIEiUV+F2UhnIgr0kCAtgW5Q/Fx8WnhT7ET548JX53NNHYCAiSMJN w3rhh4Jzd1pLxNLu82qLy7iZvSsXh9gj9gYcFxgmuI5z9R31k1dEC4HNUS8HppCq3upSlpbpRZ/ Y06UB6iCUIi+hEvLpc65M1d4YwwubhadR9d82W68ep1fzj1yMg+Q5DVB3FkiRjR/27Ikkyo+iQZ OggA5KsJnl9mOXyMpnllk+QerbL+U15XwUPwddN/p9O+DSzmNr7eqHz6jjBU5Ix2U75yC4byQKp a6X+b3QzWfs0d875JnYEEEIdsLdGnIV+obBHcJr2B8/w7NziasAA+VZCiTKt0Z9Sy+cT6EbT3BS 3VrQTP9bBGe38h0DuJppQi1R3afPX11fHbolTYFJ9c3ZOochKbrky2RLbIqOWgQ== X-Received: by 2002:a05:600c:b85:b0:495:5365:c0d1 with SMTP id 5b1f17b1804b1-49553d85ea0mr60761645e9.14.1784472254747; Sun, 19 Jul 2026 07:44:14 -0700 (PDT) Received: from mf-00-01.. ([194.220.239.180]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49549c9c940sm190238905e9.13.2026.07.19.07.44.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 07:44:14 -0700 (PDT) From: Mykola Marzhan To: Song Liu , Yu Kuai Cc: Li Nan , Xiao Ni , linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/4] md/md-bitmap: mask sb->state on load to drop runtime-only bits Date: Sun, 19 Jul 2026 14:44:06 +0000 Message-ID: <20260719144409.940492-2-mykola@meshstor.io> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260719144409.940492-1-mykola@meshstor.io> References: <20260719144409.940492-1-mykola@meshstor.io> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" md_bitmap_read_sb() does `bitmap->flags |=3D le32_to_cpu(sb->state)` with no mask, so any bit set in the on-disk state field becomes a runtime flag. With BITMAP_WRITE_ERROR (bit 2) set on disk, md_bitmap_create() fails with -EIO and the array refuses to assemble until the bitmap superblock is rewritten externally. That bit can genuinely be on disk: kernels before v4.15 wrote sb->state unmasked -- commit 97f0eb9f0fec ("md/bitmap: clear BITMAP_WRITE_ERROR bit before writing it to sb") added the write-side clear -- so an array that hit a transient bitmap write error under an older kernel carries the bit forever. On-disk corruption or an external write plants it today. The write side has masked WRITE_ERROR out since v4.15; the load side is the missing half. Mask the loaded state to BITMAP_STALE, the only bit this loader consumes: WRITE_ERROR and DAEMON_BUSY are kernel-runtime signals, FIRST_USE and CLEAN are used only by the llbitmap loader (a superblock this loader accepts cannot carry them, since versions above BITMAP_MAJOR_CLUSTERED are rejected), and HOSTENDIAN is derived from sb->version, not sb->state. Reproducer: write 0x04 into byte offset 48 (the state field) of the bitmap superblock on every member (a single forged member can be masked by another member's clean copy), then assemble: RUN_ARRAY fails with -EIO. With this fix the array starts and sb->events advances normally. Fixes: 32a7627cf3a3 ("[PATCH] md: optimised resync using Bitmap based inten= t logging") Cc: stable@vger.kernel.org Assisted-by: Claude-Code:claude-opus-4-8 Signed-off-by: Mykola Marzhan --- drivers/md/md-bitmap.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c index 0f02e2956398..4dd3fc2a9e15 100644 --- a/drivers/md/md-bitmap.c +++ b/drivers/md/md-bitmap.c @@ -931,8 +931,13 @@ static int md_bitmap_read_sb(struct bitmap *bitmap) } } =20 - /* assign fields using values from superblock */ - bitmap->flags |=3D le32_to_cpu(sb->state); + /* + * Only BITMAP_STALE is meaningful to this loader from sb->state: + * WRITE_ERROR and DAEMON_BUSY are kernel-runtime signals (kernels + * before v4.15 persisted WRITE_ERROR), FIRST_USE/CLEAN are + * llbitmap-only, and HOSTENDIAN is derived from sb->version below. + */ + bitmap->flags |=3D le32_to_cpu(sb->state) & BIT(BITMAP_STALE); if (le32_to_cpu(sb->version) =3D=3D BITMAP_MAJOR_HOSTENDIAN) set_bit(BITMAP_HOSTENDIAN, &bitmap->flags); bitmap->events_cleared =3D le64_to_cpu(sb->events_cleared); --=20 2.43.0 From nobody Sat Jul 25 03:47:43 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 9E79139E176 for ; Sun, 19 Jul 2026 14:44:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784472261; cv=none; b=sF2zRLqBZPHNsT8d036WzYu2iJLBYtFqXmX/Fm1x4i3FXD2vWS48+WW2mkD0qgXE4fD6rl6Ah077bOwZCHVQeQ9aoYuPWEehGu7RgOwJNoZ97dItUyNu31ODkkiAL6Qj4U3pB8O59rl6WKd3ScUuc8+fu8tyf0z4fC87h9AjlUQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784472261; c=relaxed/simple; bh=OjK0P0grXIP5S3JmdPdX8ixBTc6NqX0sbpWjba393e8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IdS4eLv5T5gNvrSlt6Z018gE7G8zpS4+o+r47XtksvoFS4CtNah+MBsPiJKSu+TNNpvTFQ0GrC27UWXdGq+eX5rWdmyrnb9AHq1u9Yl/wvzxYg3J0/OP+l3Q1beBW3J99Ds1BGpo5RJ7NY4q4UzWXbuLyTbnCC3y26Yz2r32Ne0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meshstor.io; spf=pass smtp.mailfrom=meshstor.io; dkim=pass (2048-bit key) header.d=meshstor.io header.i=@meshstor.io header.b=Ni9Q7ouR; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meshstor.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meshstor.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meshstor.io header.i=@meshstor.io header.b="Ni9Q7ouR" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-49546c690ffso20379115e9.2 for ; Sun, 19 Jul 2026 07:44:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meshstor.io; s=google; t=1784472256; x=1785077056; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=p0G31B+Jj55yY0X17Nesehfar6IDfQLHZUQBZ4ogThM=; b=Ni9Q7ouR6IaLdJUVC+7Fllguok9DTIviRywykpvrVJhpKJ8mi1oHVPx4zGtIMyzASX bcpFhUijEBs4XKJ5XSzt6EAANBAoIeFxgJm+9sEh21KHJTCoER3XTLRUcckHXoXVacLW 35eaNMN7Gwrg0jkj0XSJJLi7a1mBmOrgJEOM1bpLCBmudPgD97LO8SBbmHxq1MtrOoK9 kazgU06n02Ev40A1SIt7b8V2XhkK5/7CoPkewVnWWwCFrIgzy5RAyTu53XPx3T6nZ5Ys M/oVu8eUSUo+wiRRRHthEkAKneLGZdhKMtXduRnM29oQPiVLKtTrbnGwBAPmEG+fr+fM GHAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784472256; x=1785077056; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=p0G31B+Jj55yY0X17Nesehfar6IDfQLHZUQBZ4ogThM=; b=WAVkpjSt2FCUgSLOnn6DvHWJPwm7Bw1TCN2p7tx3WfcQ7aY9YJI7PkJvmSr/T+7FGl cVi2bOt6ssZy0B7EsE7sJlmVaKg0TNbk2A3Xz6x8ELLh06xSIqYF0ysN6k1z2vXpnkg9 J00vad7FRCwcyWEUpwMJj52pubdV+UBl0RJgiIkbKmiRpPuLhgb7VpOGjEnxcFTJG0pi rX/6oWE2vTEGzv3vFhB5USoVx9VUAscswt2Hj8j/er8BueMInLudhtEe8d1wh3cC7dHq NPpXTTnWHVH52xBAVY6Hvvl2AXfWlaLmQ2TrcuasvHYNGbZmNczC9ATl0PtwuwR3HVtA IbOA== X-Forwarded-Encrypted: i=1; AHgh+RqkSifcWbEut8oz4HozsxpVNLSydQoQcyvXpe/GfWwIRdLu4SzrgmQ61O35Tzs0KptONp2yucoTOCAzoMk=@vger.kernel.org X-Gm-Message-State: AOJu0YyUnYvAOdTLOp5dtQq8XpoRdEnh8WkB5gtJExKzmWQcw+o7WMWk 1sMFqmozOoVClkMHMOLv+NtNkCs6EUK54XczXn9ep6tuCJiTb38XeVHXdMWqcI8i9A== X-Gm-Gg: AfdE7ck7c+TnbQOBlT9SdyvKms1up9r5sfR+UFxtLNmU2NF9X80qAu0JGumv4UvWWg6 wYbTaOAyCkAstCRUJPVHKH6RGAUa64M/2VQ14JCn0VqCawBYRcQiX2RReE05xH2Zb1H00u9r3lf qU/k8AxD1h4F2X3qxMdO30SKFV8/6aqcJIdKkyoRd/q65BMsUY+6IaA+6OKIqoecKZ5TePy3hc/ A7eokCXcQYxpLLSjySkbaI3Il2vw0pyZ6caNcNF/YxLbZeNoF7hD+JiKX9dHtCGZwZqrmyOwA2/ OPIBxrPxZHeUQNzqdDD2sJs+y1k/S7YscEB/b0APigYChAVYPMU+Ekp6praYxRnUoElKhafqubI RmB/yclIBXj6OTGO0DHsk6T4JGJ955Ax1f9/ZfPgsuVvlHFeph8NQFAy3HNzdSxa+/r6OASZz X-Received: by 2002:a05:600c:4e94:b0:495:571e:e5d3 with SMTP id 5b1f17b1804b1-495571ee75fmr38781525e9.36.1784472255879; Sun, 19 Jul 2026 07:44:15 -0700 (PDT) Received: from mf-00-01.. ([194.220.239.180]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49549c9c940sm190238905e9.13.2026.07.19.07.44.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 07:44:15 -0700 (PDT) From: Mykola Marzhan To: Song Liu , Yu Kuai Cc: Li Nan , Xiao Ni , linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/4] md/md-llbitmap: mask sb->state on load to drop runtime-only bits Date: Sun, 19 Jul 2026 14:44:07 +0000 Message-ID: <20260719144409.940492-3-mykola@meshstor.io> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260719144409.940492-1-mykola@meshstor.io> References: <20260719144409.940492-1-mykola@meshstor.io> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" llbitmap_read_sb() copies sb->state straight into llbitmap->flags with no mask, so any bit set in the on-disk state field becomes a runtime flag. With BITMAP_WRITE_ERROR (bit 2) on disk, llbitmap_enabled() returns false for the array's entire lifetime: llbitmap_update_sb() early-returns, the state machine returns BitNone, the bits attribute reports "bitmap io error", and on-disk sb->events stops advancing. The bitmap is silently disabled with no log line attributing the cause, and the next clean reassemble forces a full resync because sb->events is stale. Runtime bits do reach disk: llbitmap_update_sb() writes the raw flags word, so BITMAP_DAEMON_BUSY is persisted whenever a superblock update coincides with a daemon-period overrun -- the condition that logs "daemon_work not finished". WRITE_ERROR itself has no reachable write-side path today (its only setter is update_sb's own read-failure branch, which returns before writing), but on-disk corruption or an external write plants it all the same. Mask the loaded state to the bits this loader consumes (STALE, FIRST_USE and CLEAN), as the previous patch did for the classic loader. Masking at load neutralises whatever is on disk and is the minimal backportable fix; masking the write side is left as a follow-up cleanup. Reproducer: write 0x04 into byte offset 48 (the state field) of the llbitmap superblock on every member (a forge on a single member can be masked by another member's clean copy), then assemble. Without this fix the bits attribute reports "bitmap io error" and sb->events is frozen; with it the bitmap is alive and sb->events advances normally. Fixes: 5ab829f1971d ("md/md-llbitmap: introduce new lockless bitmap") Cc: stable@vger.kernel.org # v6.18+ Assisted-by: Claude-Code:claude-opus-4-8 Signed-off-by: Mykola Marzhan --- drivers/md/md-llbitmap.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/md/md-llbitmap.c b/drivers/md/md-llbitmap.c index e8f853e8461d..0b591124dc63 100644 --- a/drivers/md/md-llbitmap.c +++ b/drivers/md/md-llbitmap.c @@ -981,7 +981,15 @@ static int llbitmap_read_sb(struct llbitmap *llbitmap) else mddev->bitmap_info.space =3D mddev->bitmap_info.default_space; } - llbitmap->flags =3D le32_to_cpu(sb->state); + /* + * Mask the loaded state to the bits this loader consumes. + * WRITE_ERROR and DAEMON_BUSY are kernel-runtime signals; a stray + * WRITE_ERROR trusted from disk silently disables the bitmap for + * the array's entire lifetime. + */ + llbitmap->flags =3D le32_to_cpu(sb->state) & + (BIT(BITMAP_STALE) | BIT(BITMAP_FIRST_USE) | + BIT(BITMAP_CLEAN)); if (test_and_clear_bit(BITMAP_FIRST_USE, &llbitmap->flags)) { ret =3D llbitmap_init(llbitmap); goto out_put_page; --=20 2.43.0 From nobody Sat Jul 25 03:47:43 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 3373839D6DD for ; Sun, 19 Jul 2026 14:44:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784472264; cv=none; b=I+ZbGvGyTai3KaxmACgb6w9xGLhijR7i2oXQ6vm88eiwNtdRD5FSimuy2W9Xz2xZIQWZJO+WsJ7mEBYqvYOlcGsEI+o5+x0Zh1FFetXoQeHkWwjesgqV7zNLOZgT98r8K7xT6Qx1EB3qD8K/a3s14ff9QZ0ZnxMOooYCRTQd4i8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784472264; c=relaxed/simple; bh=A1lUF0TdRV4gp86VJGKxfTwPvbExvR4m89rH3oMJtVs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=H6Q8EA2HO2U875GNmBrRbkZ4uRG5sP55PNachvDCynCXRbZDh55a980Ltg4OCwYVIHDOcZm4IqX33JSF9R/AVSvQsf+6l//0HysdmSOUqCu0ufXjNTEZbR25eDeE0uz46TxUHooSNesYbUGq4A0pmft374l9+EyAS3sXkpjiclM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meshstor.io; spf=pass smtp.mailfrom=meshstor.io; dkim=pass (2048-bit key) header.d=meshstor.io header.i=@meshstor.io header.b=VAA4r8/w; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meshstor.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meshstor.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meshstor.io header.i=@meshstor.io header.b="VAA4r8/w" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-495590dde14so5557305e9.0 for ; Sun, 19 Jul 2026 07:44:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meshstor.io; s=google; t=1784472258; x=1785077058; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=07PgFPWCTRuDNrLVBs68Rjs2ic59FL1mErS/bBKr4IE=; b=VAA4r8/wvKpFlsLiQHspQMB1QllEIiFNO7DnzO01NwJLENKj+V1LSvn+DZdHWzMG5J T1F1cTijsX2LCLdUMiKwCR9+JywJVtdHCpw+EH16+74jRzNHl98mHWdohzFHpTemS8M+ 3/P317V03g7eUSWR50++IasYGX+dDPmP9j8UX2jIXJbcYDbV+7KlMbg1Ogx9xxj2MqnO aWJ90pvaxdi79BTHSPHPrt7YDslsGvUawZBb9ip3gsGSVvXeE6o21ZL9LmJNtMl3+b3X qyP5vfG7w+2DD4+RGrurS5CC/RIuXH8MlyAdYx7a6QRIfGY0HxIEzLf2IMAej7sYioKL GEDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784472258; x=1785077058; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=07PgFPWCTRuDNrLVBs68Rjs2ic59FL1mErS/bBKr4IE=; b=lazytHtImXNV24MvAVWqxoCrSoPHmoJaZueYdyMprxSOxfysO35rGSsJroykAR4ZWT gP9Cwpa40bd3HgFpEZV6Xuwrcm+HPkQFkfwPCv3sowAy7dYAj/U/vhBHrO2BQN+HvNCY /XQn80fe3htMifbiq/N98F/suBStvHDe8hp2IpFNJ8z17IRLfNizAnX/TGeXSP+wv/4s vofVUiMmefWUOiLQzS2kSA0DvkVCZp1kfAs6t3ZRVAtKShQFSaG0L3biZ9vO+zaalzfk nHgcZ2EuZhxJiE/v7n8vNI8uryB0XWLpJT3q97qPopPJI5YKCCwbedZL02jyGIszxvyx qN7w== X-Forwarded-Encrypted: i=1; AHgh+Rp+uPi25kit39XECJht7SNlQgdqqc+pnsvqRlvhg+5XTu790nSODU3Dy3URy8kWDVZzmoOesBvz8ML2Vsg=@vger.kernel.org X-Gm-Message-State: AOJu0Ywf7WwcICflbIoI2qRUEu2+/aGflxUhXnCJgWI2zONTbcxhQ3VO 05eWpjx+h0QVmsuOQ2l//MITcUJ6LoQlWZF8ebNJv6y02zdpaJJ+xufF1kMFqWrzlfU1j2aSoZ1 exrlZxc3h X-Gm-Gg: AfdE7cneQAO1HDitzJctOuSIWPWiZIjpORyM5jKQV+tYh+cY3dyi5n+7aVm2Qj2OpBT 1llCwxG5bX97iPPP+fo+b8NXXJ4cLAFzyFW/qzwErwtJmt2kYOs6VQww1YdrV4UKeeBPmS1Et7p Daay69/Peu3hkTh2TZ1YXONK3fNlqZA4DZgXAExIUZcksc4lUeXTmzRM3xGbe5WyRmgfLpEwIE0 0gwGnY44Wo7aNZGNbap6U86UCALYtqIUVDs8/4KJZRAsuCU3e7i3yj02emYeIhB+0TNwEJkzAeB Me2sTT4QSJLpxpG08uzx27cqgD9K/MNOIO35PbemTRJg7rKZLqcsT96VtktaYnUhYFCMR3HeNtT pSO/5wtiBOWp82y1umzniaRPjJjPDD8fHVGU9Vb3vqpRBnu0s3fD6qUDyok9HFNKayA1POneh X-Received: by 2002:a05:600c:26d4:b0:495:4075:7dfa with SMTP id 5b1f17b1804b1-4954a51e4abmr73523085e9.35.1784472258290; Sun, 19 Jul 2026 07:44:18 -0700 (PDT) Received: from mf-00-01.. ([194.220.239.180]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49549c9c940sm190238905e9.13.2026.07.19.07.44.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 07:44:17 -0700 (PDT) From: Mykola Marzhan To: Song Liu , Yu Kuai Cc: Li Nan , Xiao Ni , linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/4] md/md-llbitmap: unmap sb page before freeing it Date: Sun, 19 Jul 2026 14:44:08 +0000 Message-ID: <20260719144409.940492-4-mykola@meshstor.io> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260719144409.940492-1-mykola@meshstor.io> References: <20260719144409.940492-1-mykola@meshstor.io> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Every path in llbitmap_read_sb() that maps the superblock page ends at the out_put_page label, which frees the page and only then unmaps it: __free_page(sb_page); kunmap_local(sb); The page comes from alloc_page(GFP_KERNEL), so kunmap_local() is currently a no-op everywhere except CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP builds -- where the page really is freed while a live mapping still points at it. Unmap before freeing. Fixes: 5ab829f1971d ("md/md-llbitmap: introduce new lockless bitmap") Assisted-by: Claude-Code:claude-opus-4-8 Signed-off-by: Mykola Marzhan Reviewed-by: Yu Kuai --- drivers/md/md-llbitmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/md/md-llbitmap.c b/drivers/md/md-llbitmap.c index 0b591124dc63..63ff2c0d8b43 100644 --- a/drivers/md/md-llbitmap.c +++ b/drivers/md/md-llbitmap.c @@ -1035,8 +1035,8 @@ static int llbitmap_read_sb(struct llbitmap *llbitmap) ret =3D llbitmap_cache_pages(llbitmap); =20 out_put_page: - __free_page(sb_page); kunmap_local(sb); + __free_page(sb_page); return ret; } =20 --=20 2.43.0 From nobody Sat Jul 25 03:47:43 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 92AC639D6EE for ; Sun, 19 Jul 2026 14:44:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784472265; cv=none; b=NOPePPIMFd97zgco8KeVa/NMkRz45A6oU07rzOD9JEwIo3ApM66uz81NtuIGmZ0E4VtNB/ogq6b7SkB89B8jsh2mjoW1Jazm8PQR9Fhre2pkHwpeluRRwrOnJsIfTNXGkevFfgRuolONyxu+MyZGzAqIgbZOOPrzdssG5a7WqGU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784472265; c=relaxed/simple; bh=/Ak65HGCfNx10gucoukiCwZEowYeqQLnSJnZyR9dXnA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PAHOGF2zoD3unvYq8ayKf8WG/iLvFjLUuNr/0sMTcVC7WidpQp9hlry4Cm+6Una2dn92rxJMIOKIcwrkvEn8YK7cfDR+Hi//AJE85bS3O8Kh3o2YYgBHgOh9IZWmKmbNZiM/7YGf8gL/2MFMbEObYlM5v4Ru4FrASAa8YqOSRZk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meshstor.io; spf=pass smtp.mailfrom=meshstor.io; dkim=pass (2048-bit key) header.d=meshstor.io header.i=@meshstor.io header.b=ovvjhX+i; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meshstor.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meshstor.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meshstor.io header.i=@meshstor.io header.b="ovvjhX+i" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4953e04ef16so35433565e9.2 for ; Sun, 19 Jul 2026 07:44:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meshstor.io; s=google; t=1784472260; x=1785077060; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=s8d/kYE6gB7nFrCDCulivUxizVrEcWfSYSHuPECy3cA=; b=ovvjhX+iohpBMV0P3HzIabSipbFz/ls7YJd0gG2R5JsLuEVLHe4Wbo64ygWgwrrYnw WIVC89G4s12ac7LMOGBHsT1R5nhNSSr+wKnQI14DqrIpkARmZUWTKYr/R5hUg05SEsVr hfF0kgDWiQLmK1fcImOiSDGzP2GR2sXn8vA0szruRA2y59VGJsxW91wl1oSN4jtL/X5C GR0VE03gOik1xbfGsJOEtJy01oWXbVRBxkj++2e19DLfcrsPjeGZ4IRuy+R7vcFMP1MF hIc7t439ZMwZDik0wrDRN7dTxUIwMFpy2+7DvNVzWKacD58Cr7f/bb257M236ylD33Gb rLVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784472260; x=1785077060; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=s8d/kYE6gB7nFrCDCulivUxizVrEcWfSYSHuPECy3cA=; b=VA6BlkJ4uMvuwJToK8ZmYVCOYnbOI9DgnqUashODg7pisHU+Ls51TbAo/9jrm3QCJa ar8hy/boYjxmZtTz3GyM/nTtiDyIKVPK/qfvvMqsnK109IDStGfAWaHPMeLszHhnCuc6 J3s/2cB9p0UjeZcANlMgRi31f7fb4+UGMGVuDAFRrAoUOPkkm37lnIMMUBFwvC53D7L8 lI5KH5GKF8O+gZk309CtSarXm2n2h3NrSk28ifpKdkw73ELzOuTeB8cvhvSMYqO3KdWK ztW+aESQlfC2+FZ9j/bUrjxIE0tApDi6PVQHt1edy1a8sNv51G1glpjlS2UKv4rEi9TL UlOg== X-Forwarded-Encrypted: i=1; AHgh+Rr4xyyC4S5GFTjefZXq9By7NwRok7dmFQgdCLs71daYZCQUM8MqBnZgxmMx2uljhKw+ri/jgmYtSHwjgjg=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1QAvcwalmrwIvE2p4p3pTzcQ2OSOi3w7lshPp8VuEwFwEDVtf rtguAkMmE+aF6pVaSjY3zKTcXmLDdi1LBbuWwQrNbSskMHGrQyxAEZM8P1bJSQ24sL1hJ9BYZSQ nq09rP8gK X-Gm-Gg: AfdE7cnhJf3w41MoBNuL8arpfCdAMgdK4DbW5N7Yyh9ba7YyHsfrMfVXVwANe++7IYQ 6Ryw42ZPALRWU53rkGZgZTuzx+odWGNlpTrpXdxMs6ZkpTYgagjzt2Dsf4hGn1iIbu3f7Eta2We AjsgJpncTMxjg34BW4i+3OkDP990JlPYKLILB4Mw8mFf1ecBbOgCB2FHwUI25h7Dp2ll7rtV3mG RaDJCe0Lg7ygq0gBWmdyHiPpqwBUVBbvET4YJJrLeakm2Bs5EWPfPpB38GgDRiRmnl5+4bw9Zme KZqgpZl0CPWQ52JkU0qECl5SY2L01bImuWBXrdUBoLOZEWFzfMpQlYQvsjvRE71Edw+MrPjHCqW VyhWBO31CRQMGeOx09HNmeWpZ1Zxu3rBD6n/JO6fjnFl6S2NAWAtDvB5Fv8RJ5A== X-Received: by 2002:a05:600c:1554:b0:493:a570:df7d with SMTP id 5b1f17b1804b1-4954a402f91mr123020225e9.20.1784472259634; Sun, 19 Jul 2026 07:44:19 -0700 (PDT) Received: from mf-00-01.. ([194.220.239.180]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49549c9c940sm190238905e9.13.2026.07.19.07.44.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 07:44:19 -0700 (PDT) From: Mykola Marzhan To: Song Liu , Yu Kuai Cc: Li Nan , Xiao Ni , linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/4] md: include events counters when kicking non-fresh device Date: Sun, 19 Jul 2026 14:44:09 +0000 Message-ID: <20260719144409.940492-5-mykola@meshstor.io> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260719144409.940492-1-mykola@meshstor.io> References: <20260719144409.940492-1-mykola@meshstor.io> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When analyze_sbs() kicks a member with a stale events counter, the warning names the device but not the divergence that caused the kick, so judging whether the kicked member is salvageable means running mdadm --examine on every member. Print the member's on-disk events counter and the freshest events counter in the warning itself. rdev->sb_events cannot be used here: it is only assigned when a superblock is written and still reads 0 during assemble. Read the counter from the superblock page instead -- md_event() for 0.90 metadata, the little-endian events field for 1.x. The legacy substring "kicking non-fresh %pg from array!" is unchanged, so existing log parsers continue to match. Assisted-by: Claude-Code:claude-opus-4-8 Signed-off-by: Mykola Marzhan --- drivers/md/md.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/drivers/md/md.c b/drivers/md/md.c index d60ea7aaca3a..9ec87375a717 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -3934,8 +3934,29 @@ static int analyze_sbs(struct mddev *mddev) if (rdev !=3D freshest) { if (super_types[mddev->major_version]. validate_super(mddev, freshest, rdev)) { - pr_warn("md: kicking non-fresh %pg from array!\n", - rdev->bdev); + u64 rdev_events =3D 0; + + /* + * rdev->sb_events is only assigned when + * writing a superblock and reads 0 during + * assemble; read events from the on-disk + * superblock instead. + */ + if (rdev->sb_page) { + if (mddev->major_version =3D=3D 1) { + struct mdp_superblock_1 *sb =3D + page_address(rdev->sb_page); + rdev_events =3D le64_to_cpu(sb->events); + } else if (mddev->major_version =3D=3D 0) { + mdp_super_t *sb =3D + page_address(rdev->sb_page); + rdev_events =3D md_event(sb); + } + } + pr_warn("md: kicking non-fresh %pg from array! (events=3D%llu, freshes= t=3D%llu)\n", + rdev->bdev, + (unsigned long long)rdev_events, + (unsigned long long)mddev->events); md_kick_rdev_from_array(rdev); continue; } --=20 2.43.0