Thread (20 messages) 20 messages, 4 authors, 2021-07-16

RE: [Patch v3 2/3] Drivers: hv: add Azure Blob driver

From: Long Li <longli@microsoft.com>
Date: 2021-07-14 21:14:25
Also in: linux-doc, lkml

Subject: Re: [Patch v3 2/3] Drivers: hv: add Azure Blob driver

On Tue, Jul 13, 2021 at 07:45:21PM -0700, longli@linuxonhyperv.com wrote:
quoted
From: Long Li <longli@microsoft.com>

Azure Blob storage provides scalable and durable data storage for Azure.
(https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fazu
quoted
re.microsoft.com%2Fen-
us%2Fservices%2Fstorage%2Fblobs%2F&amp;data=04%7
quoted
C01%7Clongli%40microsoft.com%7C950a81a410c54c2475a308d946ec0c09%7C
72f9
quoted
88bf86f141af91ab2d7cd011db47%7C1%7C0%7C637618801920394272%7CUnk
nown%7C
quoted
TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiL
CJXVC
quoted
I6Mn0%3D%7C1000&amp;sdata=iLDP6EYsoCDlLvToJB31hIQxW3NdCnR0UH31
FRDwvRI%
quoted
3D&amp;reserved=0)

This driver adds support for accelerated access to Azure Blob storage.
As an alternative to REST APIs, it provides a fast data path that uses
host native network stack and secure direct data link for storage server
access.

So it goes around the block layer?  Why?
Azure Blob is object-oriented storage solution designed for cloud environments.
While it's entirely possible to go through block layer, it's not as efficient as using
its native APIs for data access. Some of the security features (authentication, 
tokens, lifecycle management) are not easily integrated into block layer. The
object model in Azure Blob is designed to be scalable and doesn't have many
limitations that block layer enforces (e.g. number of sectors).

Please refer to this link for different storage models in Azure:
https://docs.microsoft.com/en-us/azure/storage/common/storage-introduction#core-storage-services
quoted
This driver will be ported to FreeBSD. It's dual licensed for BSD and GPL.
Being the copyright holder, you are free to relicense this code to any other
license you want to.  So why is this single HV driver different from all the
other ones in this regard when it comes to the license?

Given that this driver only works when talking to GPL-only symbols in the
kernel, how could it be ported to freebsd as-is by anyone who is not the
copyright holder?
quoted
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: Stephen Hemminger <redacted>
Cc: Wei Liu <wei.liu@kernel.org>
Cc: Dexuan Cui <decui@microsoft.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Bjorn Andersson <redacted>
Cc: Hans de Goede <redacted>
Cc: Dan Williams <redacted>
Cc: Maximilian Luz <luzmaximilian@gmail.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Ben Widawsky <redacted>
Cc: Jiri Slaby <jirislaby@kernel.org>
Cc: Andra Paraschiv <redacted>
Cc: Siddharth Gupta <redacted>
Cc: Hannes Reinecke <hare@suse.de>
Cc: linux-doc@vger.kernel.org
Signed-off-by: Long Li <longli@microsoft.com>
---
 Documentation/userspace-api/ioctl/ioctl-number.rst |   2 +
 drivers/hv/Kconfig                                 |  10 +
 drivers/hv/Makefile                                |   1 +
 drivers/hv/azure_blob.c                            | 625 +++++++++++++++++++++
 drivers/hv/channel_mgmt.c                          |   7 +
 include/linux/hyperv.h                             |   9 +
 include/uapi/misc/azure_blob.h                     |  34 ++
 7 files changed, 688 insertions(+)
 create mode 100644 drivers/hv/azure_blob.c  create mode 100644
include/uapi/misc/azure_blob.h
diff --git a/Documentation/userspace-api/ioctl/ioctl-number.rst
b/Documentation/userspace-api/ioctl/ioctl-number.rst
index 9bfc2b5..d3c2a90 100644
--- a/Documentation/userspace-api/ioctl/ioctl-number.rst
+++ b/Documentation/userspace-api/ioctl/ioctl-number.rst
@@ -180,6 +180,8 @@ Code  Seq#    Include File
Comments
quoted
 'R'   01     linux/rfkill.h                                          conflict!
 'R'   C0-DF  net/bluetooth/rfcomm.h
 'R'   E0     uapi/linux/fsl_mc.h
+'R'   F0-FF  uapi/misc/azure_blob.h                                  Microsoft Azure Blob
driver
quoted
+
+<mailto:longli@microsoft.com>
 'S'   all    linux/cdrom.h                                           conflict!
 'S'   80-81  scsi/scsi_ioctl.h                                       conflict!
 'S'   82-FF  scsi/scsi.h                                             conflict!
diff --git a/drivers/hv/Kconfig b/drivers/hv/Kconfig index
66c794d..e08b8d3 100644
--- a/drivers/hv/Kconfig
+++ b/drivers/hv/Kconfig
@@ -27,4 +27,14 @@ config HYPERV_BALLOON
 	help
 	  Select this option to enable Hyper-V Balloon driver.

+config HYPERV_AZURE_BLOB
+	tristate "Microsoft Azure Blob driver"
+	depends on HYPERV && X86_64
+	help
+	  Select this option to enable Microsoft Azure Blob driver.
+
+	  This driver supports accelerated Microsoft Azure Blob access.
No definition of what this is?
quoted
+	  To compile this driver as a module, choose M here. The module will
be
quoted
+	  called azure_blob.
+
 endmenu
diff --git a/drivers/hv/Makefile b/drivers/hv/Makefile index
94daf82..a322575 100644
--- a/drivers/hv/Makefile
+++ b/drivers/hv/Makefile
@@ -2,6 +2,7 @@
 obj-$(CONFIG_HYPERV)		+= hv_vmbus.o
 obj-$(CONFIG_HYPERV_UTILS)	+= hv_utils.o
 obj-$(CONFIG_HYPERV_BALLOON)	+= hv_balloon.o
+obj-$(CONFIG_HYPERV_AZURE_BLOB)	+= azure_blob.o
Your naming scheme is different from the other hv modules, why?
quoted
 CFLAGS_hv_trace.o = -I$(src)
 CFLAGS_hv_balloon.o = -I$(src)
diff --git a/drivers/hv/azure_blob.c b/drivers/hv/azure_blob.c new
file mode 100644 index 0000000..5367d5e
--- /dev/null
+++ b/drivers/hv/azure_blob.c
@@ -0,0 +1,625 @@
+// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only WITH
+Linux-syscall-note
.c files can NOT have the syscall note license, as that makes no sense at all.

I'm stopping here.  Please go run this through your legal department and get
them to sign off on this as it does not seem that you all understand the issues
when it comes to licenses and the Linux kernel at all.  I want to see a lawyer
sign off on this patch next time if you all want to attempt something crazy like
this.
quoted
+/* Copyright (c) Microsoft Corporation. */
You forgot a date, your lawyers will be signing you up for some education
classes now, have fun!

gre gk-h
I will address your comments on licensing.

Long
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help