[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: sbuild on hurd-amd64...



Le 22/08/2025 à 15:47, Stéphane Glondu a écrit :
FI, apparently ATM when using a file as image, libstore uses 1-byte
block size, and thus disk sizes should be smaller than 2G otherwise
boot's device size reporting interface gets wrong.

(an alternative is to use a disk partition, which report 512-byte block
size)

Perhaps we could make libstore use 512-byte block size when the file is
multiple of 512 bytes. It could also be configurable, by introducing a
libstore layer (similarly to the part libstore layer)

It makes sense, but I'm not yet there.

I've implemented the first idea. With the attached patch, I can boot a subhurd with a 3G image. (Without, I cannot.)


Cheers,

--
Stéphane
From ab82e4e6065e523e9bb0e733e9c9d58c126f29c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Glondu?= <steph@glondu.net>
Date: Sat, 23 Aug 2025 09:03:53 +0100
Subject: [PATCH] libstore/file.c: use 512-byte blocks if file size is a
 multiple

As suggested in:

  [🔎] aKheR0SX8yI5Aw9Q@begin">https://lists.debian.org/msgid-search/[🔎] aKheR0SX8yI5Aw9Q@begin
---
 libstore/file.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/libstore/file.c b/libstore/file.c
index c54eee9..7c08d4b 100644
--- a/libstore/file.c
+++ b/libstore/file.c
@@ -271,6 +271,7 @@ store_file_create (file_t file, int flags, struct store **store)
   struct store_run run;
   struct stat stat;
   error_t err = io_stat (file, &stat);
+  size_t block_size = 1;
 
   if (err)
     return err;
@@ -278,9 +279,14 @@ store_file_create (file_t file, int flags, struct store **store)
   run.start = 0;
   run.length = stat.st_size;
 
+  if ((stat.st_size & 0x1ff) == 0) {
+    block_size = 512;
+    run.length = stat.st_size >> 9;
+  }
+
   flags |= STORE_ENFORCED;	/* 'cause it's the whole file.  */
 
-  return _store_file_create (file, flags, 1, &run, 1, store);
+  return _store_file_create (file, flags, block_size, &run, 1, store);
 }
 
 /* Like store_file_create, but doesn't query the file for information.  */
-- 
2.50.1


Reply to: