[SLOF] [PATCH 1/4] deblocker: Add a 'write' function

Thomas Huth thuth at redhat.com
Wed Nov 16 00:02:49 AEDT 2016


To support block writes, the deblocker should feature a 'write'
function, too. Since our only client that tries to use write
accesses so far (GRUB2) is always writing whole sectors, we
do not do the complicated read-modify-write dance here yet, but
simply check that the client always tries to write whole sectors.

Reviewed-by: Nikunj A Dadhania <nikunj at linux.vnet.ibm.com>
Signed-off-by: Thomas Huth <thuth at redhat.com>
---
 slof/fs/packages/deblocker.fs | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/slof/fs/packages/deblocker.fs b/slof/fs/packages/deblocker.fs
index 83cd712..ebed5cf 100644
--- a/slof/fs/packages/deblocker.fs
+++ b/slof/fs/packages/deblocker.fs
@@ -68,3 +68,24 @@ INSTANCE VARIABLE fail-count
   my-block @ adr @ len @ move THEN
 
   r> ;
+
+: write-blocks ( addr block# #blocks -- #writtenblks )
+    s" write-blocks" $call-parent
+;
+
+: write ( addr len -- actual )
+    dup block-size @ mod IF
+        ." ERROR: Can not write partial sector length." cr
+        2drop 0 EXIT
+    THEN
+    block-size @ /                             ( addr #blocks )
+    offset @                                   ( addr #blocks offset )
+    dup block-size @ mod IF
+        ." ERROR: Can not write at partial sector offset." cr
+        3drop 0 EXIT
+    THEN
+    block-size @ / swap                        ( addr block# #blocks )
+    write-blocks                               ( #writtenblks )
+    block-size @ *
+    dup offset +!
+;
-- 
1.8.3.1



More information about the SLOF mailing list