[Oracleasm-commits] jlbec commits r398 - in trunk: . kapi-compat/include kernel

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Wed Dec 3 16:33:16 PST 2008


Author: jlbec
Date: 2008-12-03 16:33:16 -0800 (Wed, 03 Dec 2008)
New Revision: 398

Added:
   trunk/kapi-compat/include/bio_map_user.h
Modified:
   trunk/configure.in
   trunk/kernel/oracleasm.c
Log:

oracleasm: Handle gfp argument to bio_map_user().

The kernel has updated bio_map_user() to take a gfp argument.  It will do
all underlying operations with that GFP.  We wrap that for compatibility.
oracleasm will use GFP_KERNEL like bio_map_user() used to use.  The map
happens at I/O submit time, and shouldn't conflict with anything.



Modified: trunk/configure.in
===================================================================
--- trunk/configure.in	2008-12-04 00:08:33 UTC (rev 397)
+++ trunk/configure.in	2008-12-04 00:33:16 UTC (rev 398)
@@ -213,6 +213,12 @@
     [void bio_endio(struct bio \*, unsigned int, int)])
   KAPI_COMPAT_HEADERS="$KAPI_COMPAT_HEADERS $bio_end_io_compat_header"
 
+  bio_map_user_compat_header=
+  OCFS2_CHECK_KERNEL_INCLUDES([for gfp argument to bio_map_user], linux/bio.h,
+    $kernelincludes, , bio_map_user_compat_header="bio_map_user.h",
+    [^.*unsigned long, unsigned int, int, gfp_t)])
+  KAPI_COMPAT_HEADERS="$KAPI_COMPAT_HEADERS $bio_map_user_compat_header"
+
   kmem_cache_create_header=
   OCFS2_CHECK_KERNEL_INCLUDES([kmem_cache_create() with dtor arg in slab.h],
     linux/slab.h, $kernelincludes, kmem_cache_create_header="kmem_cache_create.h", ,

Added: trunk/kapi-compat/include/bio_map_user.h
===================================================================
--- trunk/kapi-compat/include/bio_map_user.h	                        (rev 0)
+++ trunk/kapi-compat/include/bio_map_user.h	2008-12-04 00:33:16 UTC (rev 398)
@@ -0,0 +1,14 @@
+#ifndef KAPI_BIO_MAP_USER_H
+#define KAPI_BIO_MAP_USER_H
+
+#include <linux/bio.h>
+
+static struct bio *old_bio_map_user(struct request_queue *q, struct block_device *bdev,
+                                    unsigned long uaddr, unsigned int len, int write_to_vm,
+                                    gfp_t gfp_mask)
+{
+    return bio_map_user(q, bdev, uaddr, len, write_to_vm);
+}
+#define kapi_asm_bio_map_user old_bio_map_user
+
+#endif

Modified: trunk/kernel/oracleasm.c
===================================================================
--- trunk/kernel/oracleasm.c	2008-12-04 00:08:33 UTC (rev 397)
+++ trunk/kernel/oracleasm.c	2008-12-04 00:33:16 UTC (rev 398)
@@ -1258,6 +1258,9 @@
 # define kapi_asm_end_bio_io asm_end_bio_io
 #endif
 
+#ifndef kapi_asm_bio_map_user
+# define kapi_asm_bio_map_user bio_map_user
+#endif
 
 static int asm_submit_io(struct file *file,
 			 asm_ioc __user *user_iocp,
@@ -1409,9 +1412,9 @@
 		goto out_error;
 
 	ret = -ENOMEM;
-	r->r_bio = bio_map_user(bdev_get_queue(bdev), bdev,
-				(unsigned long)ioc->buffer_asm_ioc,
-				r->r_count, rw == READ);
+	r->r_bio = kapi_asm_bio_map_user(bdev_get_queue(bdev), bdev,
+					 (unsigned long)ioc->buffer_asm_ioc,
+					 r->r_count, rw == READ, GFP_KERNEL);
 	if (IS_ERR(r->r_bio)) {
 		ret = PTR_ERR(r->r_bio);
 		r->r_bio = NULL;




More information about the Oracleasm-commits mailing list