svn commit: r248771 - head/sys/dev/nvme

Jim Harris jimharris at FreeBSD.org
Tue Mar 26 22:13:07 UTC 2013


Author: jimharris
Date: Tue Mar 26 22:13:07 2013
New Revision: 248771
URL: http://svnweb.freebsd.org/changeset/base/248771

Log:
  Move common code from the different nvme_allocate_request functions into a
  separate function.
  
  Sponsored by:	Intel
  Suggested by:	carl
  Reviewed by:	carl

Modified:
  head/sys/dev/nvme/nvme_private.h

Modified: head/sys/dev/nvme/nvme_private.h
==============================================================================
--- head/sys/dev/nvme/nvme_private.h	Tue Mar 26 22:11:34 2013	(r248770)
+++ head/sys/dev/nvme/nvme_private.h	Tue Mar 26 22:13:07 2013	(r248771)
@@ -464,21 +464,30 @@ nvme_single_map(void *arg, bus_dma_segme
 }
 
 static __inline struct nvme_request *
-nvme_allocate_request(void *payload, uint32_t payload_size, nvme_cb_fn_t cb_fn, 
-		      void *cb_arg)
+_nvme_allocate_request(nvme_cb_fn_t cb_fn, void *cb_arg)
 {
 	struct nvme_request *req;
 
 	req = uma_zalloc(nvme_request_zone, M_NOWAIT | M_ZERO);
-	if (req == NULL)
-		return (NULL);
+	if (req != NULL) {
+		req->cb_fn = cb_fn;
+		req->cb_arg = cb_arg;
+		req->timeout = TRUE;
+	}
+	return (req);
+}
 
-	req->payload = payload;
-	req->payload_size = payload_size;
-	req->cb_fn = cb_fn;
-	req->cb_arg = cb_arg;
-	req->timeout = TRUE;
+static __inline struct nvme_request *
+nvme_allocate_request(void *payload, uint32_t payload_size, nvme_cb_fn_t cb_fn, 
+		      void *cb_arg)
+{
+	struct nvme_request *req;
 
+	req = _nvme_allocate_request(cb_fn, cb_arg);
+	if (req != NULL) {
+		req->payload = payload;
+		req->payload_size = payload_size;
+	}
 	return (req);
 }
 
@@ -487,15 +496,9 @@ nvme_allocate_request_uio(struct uio *ui
 {
 	struct nvme_request *req;
 
-	req = uma_zalloc(nvme_request_zone, M_NOWAIT | M_ZERO);
-	if (req == NULL)
-		return (NULL);
-
-	req->uio = uio;
-	req->cb_fn = cb_fn;
-	req->cb_arg = cb_arg;
-	req->timeout = TRUE;
-
+	req = _nvme_allocate_request(cb_fn, cb_arg);
+	if (req != NULL)
+		req->uio = uio;
 	return (req);
 }
 


More information about the svn-src-all mailing list