2005-01-17 03:35:20

by Jeff Dike

[permalink] [raw]
Subject: [PATCH 4/10] UML - allow ubd devices to provide partial end blocks

If the file backing a ubd device is not an even blocklength, then the last
partial block is now readable, and it is padded with zeros.

Signed-off-by: Jeff Dike <[email protected]>

Index: 2.6.10/arch/um/drivers/ubd_kern.c
===================================================================
--- 2.6.10.orig/arch/um/drivers/ubd_kern.c 2005-01-16 20:37:24.000000000 -0500
+++ 2.6.10/arch/um/drivers/ubd_kern.c 2005-01-16 20:40:41.000000000 -0500
@@ -682,6 +682,8 @@
return 0;
}

+#define ROUND_BLOCK(n) ((n + ((1 << 9) - 1)) & (-1 << 9))
+
static int ubd_add(int n)
{
struct ubd *dev = &ubd_dev[n];
@@ -697,6 +699,8 @@
if(err < 0)
return(err);

+ dev->size = ROUND_BLOCK(dev->size);
+
err = ubd_new_disk(MAJOR_NR, dev->size, n, &ubd_gendisk[n]);
if(err)
return(err);