From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Thu, 06 Apr 2023 15:33:36 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1pkPk7-00C0Oy-B5 for lore@lore.pengutronix.de; Thu, 06 Apr 2023 15:33:36 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1pkPjx-0008Po-To; Thu, 06 Apr 2023 15:33:25 +0200 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pkPjv-0008Ot-M5 for oss-tools@pengutronix.de; Thu, 06 Apr 2023 15:33:23 +0200 Received: from [2a0a:edc0:0:1101:1d::54] (helo=dude05.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pkPju-009OZl-Vx for oss-tools@pengutronix.de; Thu, 06 Apr 2023 15:33:23 +0200 Received: from afa by dude05.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pkPju-00DlFU-EK for oss-tools@pengutronix.de; Thu, 06 Apr 2023 15:33:22 +0200 From: Ahmad Fatoum To: oss-tools@pengutronix.de Date: Thu, 6 Apr 2023 15:33:18 +0200 Message-Id: <20230406133321.3262437-1-a.fatoum@pengutronix.de> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [OSS-Tools] [PATCH 0/3] state: void partition table reread when possible X-BeenThere: oss-tools@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: Pengutronix Public Open-Source-Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "OSS-Tools" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: oss-tools-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false So far, barebox-state with a MMC backend always opened the whole disk read/write, which triggers a partition table reread when closing the device. This can be avoided in some cases: - If we are only interested in reading, we can open it O_RDONLY - If there happens to be an on-disk-described partition at exactly the region we are interested, we can open that instead. So let's do that. The result can be easily verified with strace. Without this patch: openat(AT_FDCWD, "/dev/mmcblk0", O_RDWR|O_LARGEFILE) = 4 With this patch: openat(AT_FDCWD, "/dev/mmcblk0p6", O_RDONLY|O_LARGEFILE) = 4 Ahmad Fatoum (3): state: backend: direct: open block device in read-only mode if possible libdt: factor out u64 sysattr parsing into helper libdt: use block device partition instead of parent if found src/barebox-state/backend_bucket_direct.c | 5 +- src/barebox-state/backend_storage.c | 2 +- src/barebox-state/state.c | 6 +- src/barebox-state/state.h | 3 +- src/libdt.c | 104 +++++++++++++++++----- 5 files changed, 92 insertions(+), 28 deletions(-) -- 2.39.2