From 6ea18e6579f7fb0e2f3a51f7fa6cf7825e693ee4 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Mon, 7 Apr 2025 03:06:11 -0500 Subject: [PATCH] scripts: Tweaked bd.read to behave like an actual bd_read callback This better matches what you would expect from a function called bd.read, at least in the context of littlefs, while also decreasing the state (seek) we have to worry about. Note that bd.readblock already behaved mostly like this, and is preferred by every class except for Bptr. --- scripts/dbgbmap.py | 10 +++------- scripts/dbgbmapd3.py | 10 +++------- scripts/dbgbtree.py | 7 ++----- scripts/dbglfs.py | 10 +++------- scripts/dbgmtree.py | 7 ++----- scripts/dbgrbyd.py | 7 ++----- 6 files changed, 15 insertions(+), 36 deletions(-) diff --git a/scripts/dbgbmap.py b/scripts/dbgbmap.py index 3e10f855..6047aeb8 100755 --- a/scripts/dbgbmap.py +++ b/scripts/dbgbmap.py @@ -418,13 +418,10 @@ class Bd: def repr(self): return 'bd %sx%s' % (self.block_size, self.block_count) - def read(self, size=-1): + def read(self, block, off, size): + self.f.seek(block*self.block_size + off) return self.f.read(size) - def seek(self, block, off=0, whence=0): - pos = self.f.seek(block*self.block_size + off, whence) - return pos // self.block_size, pos % self.block_size - def readblock(self, block): self.f.seek(block*self.block_size) return self.f.read(self.block_size) @@ -2305,8 +2302,7 @@ class Bptr: def fetch(cls, bd, rattr, block, off, size, cksize, cksum): # seek/read cksize bytes from the block, the actual data should # always be a subset of cksize - bd.seek(block) - ckdata = bd.read(cksize) + ckdata = bd.read(block, 0, cksize) return cls(rattr, block, off, size, cksize, cksum, ckdata) diff --git a/scripts/dbgbmapd3.py b/scripts/dbgbmapd3.py index 02ad3f64..17122c67 100755 --- a/scripts/dbgbmapd3.py +++ b/scripts/dbgbmapd3.py @@ -447,13 +447,10 @@ class Bd: def repr(self): return 'bd %sx%s' % (self.block_size, self.block_count) - def read(self, size=-1): + def read(self, block, off, size): + self.f.seek(block*self.block_size + off) return self.f.read(size) - def seek(self, block, off=0, whence=0): - pos = self.f.seek(block*self.block_size + off, whence) - return pos // self.block_size, pos % self.block_size - def readblock(self, block): self.f.seek(block*self.block_size) return self.f.read(self.block_size) @@ -2334,8 +2331,7 @@ class Bptr: def fetch(cls, bd, rattr, block, off, size, cksize, cksum): # seek/read cksize bytes from the block, the actual data should # always be a subset of cksize - bd.seek(block) - ckdata = bd.read(cksize) + ckdata = bd.read(block, 0, cksize) return cls(rattr, block, off, size, cksize, cksum, ckdata) diff --git a/scripts/dbgbtree.py b/scripts/dbgbtree.py index 02964ffc..33d6b7a4 100755 --- a/scripts/dbgbtree.py +++ b/scripts/dbgbtree.py @@ -326,13 +326,10 @@ class Bd: def repr(self): return 'bd %sx%s' % (self.block_size, self.block_count) - def read(self, size=-1): + def read(self, block, off, size): + self.f.seek(block*self.block_size + off) return self.f.read(size) - def seek(self, block, off=0, whence=0): - pos = self.f.seek(block*self.block_size + off, whence) - return pos // self.block_size, pos % self.block_size - def readblock(self, block): self.f.seek(block*self.block_size) return self.f.read(self.block_size) diff --git a/scripts/dbglfs.py b/scripts/dbglfs.py index 50951227..51a07281 100755 --- a/scripts/dbglfs.py +++ b/scripts/dbglfs.py @@ -375,13 +375,10 @@ class Bd: def repr(self): return 'bd %sx%s' % (self.block_size, self.block_count) - def read(self, size=-1): + def read(self, block, off, size): + self.f.seek(block*self.block_size + off) return self.f.read(size) - def seek(self, block, off=0, whence=0): - pos = self.f.seek(block*self.block_size + off, whence) - return pos // self.block_size, pos % self.block_size - def readblock(self, block): self.f.seek(block*self.block_size) return self.f.read(self.block_size) @@ -2262,8 +2259,7 @@ class Bptr: def fetch(cls, bd, rattr, block, off, size, cksize, cksum): # seek/read cksize bytes from the block, the actual data should # always be a subset of cksize - bd.seek(block) - ckdata = bd.read(cksize) + ckdata = bd.read(block, 0, cksize) return cls(rattr, block, off, size, cksize, cksum, ckdata) diff --git a/scripts/dbgmtree.py b/scripts/dbgmtree.py index 53fd3696..34d42aa2 100755 --- a/scripts/dbgmtree.py +++ b/scripts/dbgmtree.py @@ -341,13 +341,10 @@ class Bd: def repr(self): return 'bd %sx%s' % (self.block_size, self.block_count) - def read(self, size=-1): + def read(self, block, off, size): + self.f.seek(block*self.block_size + off) return self.f.read(size) - def seek(self, block, off=0, whence=0): - pos = self.f.seek(block*self.block_size + off, whence) - return pos // self.block_size, pos % self.block_size - def readblock(self, block): self.f.seek(block*self.block_size) return self.f.read(self.block_size) diff --git a/scripts/dbgrbyd.py b/scripts/dbgrbyd.py index 5013ae6b..2fbb2b40 100755 --- a/scripts/dbgrbyd.py +++ b/scripts/dbgrbyd.py @@ -309,13 +309,10 @@ class Bd: def repr(self): return 'bd %sx%s' % (self.block_size, self.block_count) - def read(self, size=-1): + def read(self, block, off, size): + self.f.seek(block*self.block_size + off) return self.f.read(size) - def seek(self, block, off=0, whence=0): - pos = self.f.seek(block*self.block_size + off, whence) - return pos // self.block_size, pos % self.block_size - def readblock(self, block): self.f.seek(block*self.block_size) return self.f.read(self.block_size)