- 11 1月, 2018 3 次提交
-
-
由 Suganath Prabu Subramani 提交于
Performance improvement using block layer tag. Curent driver gets scsiio tracker and free smid from link list and array based tracking managed by driver. Accessing list in main io path is performance pentaly because of protection using spinlock "scsi_lookup_lock". In this patch: 1. Driver removes all link list access from main io path and use scmd->request->tag to get free smid. 2. Instead of holding 'struct scsiio_tracker' in its own pool driver can embed it into the scsi command. Driver provides cmd_size in scsi_host_template, so that struct scsiio_tracker is preallocated by scsi mid layer for each scsi command. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Hannes Reinecke 提交于
Move the check for outstanding commands out of the function allowing us to simplify the overall code. Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Hannes Reinecke 提交于
Abstract accesses to the scsi_lookup array by introducing mpt3sas_get_st_from_smid(). Signed-off-by: NHannes Reinecke <hare@suse.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 07 11月, 2017 1 次提交
-
-
由 Arnd Bergmann 提交于
The newly added base_make_prp_nvme function triggers a build warning on some 32-bit configurations: drivers/scsi/mpt3sas/mpt3sas_base.c: In function 'base_make_prp_nvme': drivers/scsi/mpt3sas/mpt3sas_base.c:1664:13: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] msg_phys = (dma_addr_t)mpt3sas_base_get_pcie_sgl_dma(ioc, smid); After taking a closer look, I found that the problem is that the new code mixes up pointers and dma_addr_t values unnecessarily. This changes it to use the correct types consistently, which lets us get rid of a lot of type casts in the process. I'm also renaming some variables to avoid confusion between physical and dma address spaces that are often distinct. Fixes: 016d5c35 ("scsi: mpt3sas: SGL to PRP Translation for I/Os to NVMe devices") Signed-off-by: NArnd Bergmann <arnd@arndb.de> Acked-by: NSathya Prakash Veerichetty <sathya.prakash@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 04 11月, 2017 6 次提交
-
-
由 Suganath Prabu Subramani 提交于
Updated mpt3sas driver version to 17.100.00.00 Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
Sets nvme device queue depth, name and displays device capabilities Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
Below Functions are added in various paths to support NVMe drive addition. _scsih_pcie_add_device _scsih_pcie_device_add _scsih_pcie_device_init_add _scsih_check_pcie_access_status _scsih_pcie_check_device mpt3sas_get_pdev_by_handle mpt3sas_config_get_pcie_device_pg0 mpt3sas_config_get_pcie_device_pg2 Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
* Mpt3sas driver uses the NVMe Encapsulated Request message to send an NVMe command to an NVMe device attached to the IOC. * Normal I/O commands like reads and writes are passed to the controller as SCSI commands and the controller has the ability to translate the commands to NVMe equivalent. * This encapsulated NVMe command is used by applications to send direct NVMe commands to NVMe drives. Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
* Added support for translating the SGLs associated with incoming commands either to IEE SGL or NVMe PRPs for NVMe devices. * The hardware translation of IEEE SGL to NVMe PRPs has limitations and if a command cannot be translated by hardware then it will go to firmware and the firmware needs to translate it. This will have a performance impact. To avoid that, the driver proactively checks whether the translation will be done in hardware or not. If not, then driver translates. [mkp: clarified commit message] Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
1) Added support for probing pcie device and adding NVMe drives to SML and driver's internal list pcie_device_list. 2) Added support for determing NVMe as boot device. 3) Added nvme device support for call back functions scan_finished target_alloc,slave_alloc,target destroy and slave destroy. a) During scan, pcie devices are probed and added to SML to drivers internal list. b) target_alloc & slave alloc API's allocates resources for (MPT3SAS_TARGET & MPT3SAS_DEVICE) private datas and holds information like handle, target_id etc. c) slave_destroy & target_destroy are called when driver unregisters or removes device. Also frees allocated resources and info. Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 12 10月, 2017 3 次提交
-
-
由 Sreekanth Reddy 提交于
Bump mpt3sas driver version to v16.100.00.00 Signed-off-by: NSreekanth Reddy <Sreekanth.Reddy@broadcom.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Sreekanth Reddy 提交于
Display chassis slot information along with other drive location parameters such as slot number and connector name in the logs if chassis slot validity bit is set in 'SAS Enclosure Page 0'. Signed-off-by: NSreekanth Reddy <Sreekanth.Reddy@broadcom.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Sreekanth Reddy 提交于
To reduce the memory footprint of the driver in the kdump kernel, we apply the following settings when reset_devices is set: 1. Use single MSI-x vector. 2. Disable RDPQ mode. 3. Set sg_table_size to 32 by default. 4) Set SCSI IO Queue depth to 200. [mkp: fixed commit message] Signed-off-by: NSreekanth Reddy <Sreekanth.Reddy@broadcom.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 08 8月, 2017 1 次提交
-
-
由 Arnd Bergmann 提交于
We print the driver name into one string and then add and ID and copy it into a second string of the same length, at which point gcc complains about a possible overflow: drivers/scsi/mpt3sas/mpt3sas_scsih.c: In function '_scsih_probe': drivers/scsi/mpt3sas/mpt3sas_scsih.c:8884:21: error: '_cm' directive writing 3 bytes into a region of size between 1 and 32 [-Werror=format-overflow=] printf(ioc->name, "%s_cm%d", ioc->driver_name, ioc->id); ^~~~~~~~~ drivers/scsi/mpt3sas/mpt3sas_scsih.c:8884:21: note: directive argument in the range [0, 255] drivers/scsi/mpt3sas/mpt3sas_scsih.c:8884:2: note: 'sprintf' output between 5 and 38 bytes into a destination of size 32 sprintf(ioc->name, "%s_cm%d", ioc->driver_name, ioc->id); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Making the first string shorter is sufficient to avoid the warning here, as we know it can only contain either "mpt2sas" or "mpt3sas". Signed-off-by: NArnd Bergmann <arnd@arndb.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 09 5月, 2017 1 次提交
-
-
由 Stephen Boyd 提交于
This typo is quite common. Fix it and add it to the spelling file so that checkpatch catches it earlier. Link: http://lkml.kernel.org/r/20170317011131.6881-2-sboyd@codeaurora.orgSigned-off-by: NStephen Boyd <sboyd@codeaurora.org> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 02 3月, 2017 1 次提交
-
-
由 Bart Van Assche 提交于
Commit 669f0441 ("scsi: srp_transport: Move queuecommand() wait code to SCSI core") can make scsi_internal_device_block() sleep. However, the mpt3sas driver can call this function from an interrupt handler. Hence add a second argument to scsi_internal_device_block() that restores the old behavior of this function for the mpt3sas handler. The call chain that triggered an "IRQ handler enabled interrupts" complaint is as follows: _base_interrupt() -> _base_async_event() -> mpt3sas_scsih_event_callback() -> _scsih_check_topo_delete_events() -> _scsih_block_io_to_children_attached_directly() -> _scsih_block_io_device() -> _scsih_internal_device_block() -> scsi_internal_device_block() Reported-by: NOmar Sandoval <osandov@osandov.com> Signed-off-by: NBart Van Assche <bart.vanassche@sandisk.com> Cc: Omar Sandoval <osandov@osandov.com> Cc: Hannes Reinecke <hare@suse.com> Cc: Sagi Grimberg <sagi@grimberg.me> Cc: Christoph Hellwig <hch@lst.de> Cc: Sathya Prakash <sathya.prakash@broadcom.com> Cc: Chaitra P B <chaitra.basappa@broadcom.com> Cc: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com> Cc: Sreekanth Reddy <Sreekanth.Reddy@broadcom.com> Cc: <stable@vger.kernel.org> # v4.10+ Tested-by: NOmar Sandoval <osandov@fb.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 24 2月, 2017 1 次提交
-
-
由 Hannes Reinecke 提交于
Cleanup the MSI-X handling allowing us to use the PCI-layer provided vector allocation. Signed-off-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Acked-by: NSreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 01 2月, 2017 2 次提交
-
-
由 Chaitra P B 提交于
Updated driver version to "15.100.00.00" Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Reviewed-by: NJohannes Thumshirn <jthumshirn@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Chaitra P B 提交于
Small glitch/degraded performance in Crusader is improved with SAS drives by removing unnecessary spinlocks while clearing scsi command in drivers internal lookup table. Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Reviewed-by: NJohannes Thumshirn <jthumshirn@suse.de> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 18 1月, 2017 1 次提交
-
-
由 James Bottomley 提交于
mpt3sas has a firmware failure where it can only handle one pass through ATA command at a time. If another comes in, contrary to the SAT standard, it will hang until the first one completes (causing long commands like secure erase to timeout). The original fix was to block the device when an ATA command came in, but this caused a regression with commit 669f0441 Author: Bart Van Assche <bart.vanassche@sandisk.com> Date: Tue Nov 22 16:17:13 2016 -0800 scsi: srp_transport: Move queuecommand() wait code to SCSI core So fix the original fix of the secure erase timeout by properly returning SAM_STAT_BUSY like the SAT recommends. The original patch also had a concurrency problem since scsih_qcmd is lockless at that point (this is fixed by using atomic bitops to set and test the flag). [mkp: addressed feedback wrt. test_bit and fixed whitespace] Fixes: 18f6084a (mpt3sas: Fix secure erase premature termination) Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@broadcom.com> Reviewed-by: NChristoph Hellwig <hch@lst.de> Reported-by: NIngo Molnar <mingo@kernel.org> Tested-by: NIngo Molnar <mingo@kernel.org> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 15 12月, 2016 1 次提交
-
-
由 Adam Manzanares 提交于
This patch adds support for request iopriority handling in the mpt3sas layer. This works only when a ATA device is behind the SATL. The ATA device also has to indicate that it supports command priorities in the identify information that is pulled from the SATL. Signed-off-by: NAdam Manzanares <adam.manzanares@wdc.com> Acked-by: NSreekanth Reddy <Sreekanth.Reddy@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 09 11月, 2016 7 次提交
-
-
由 Suganath Prabu Subramani 提交于
Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSathya Prakash <sathya.prakash@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
Support Atomic Request Descriptors for Ventura/SAS35 devices. Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSathya Prakash <sathya.prakash@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
For SAS35 devices MSIX vectors are inceased to 128 from 96. To support this Reply post host index register count is increased to 16. Also variable msix96_vector is replaced with combined_reply_queue and variable combined_reply_index_count is added to set different values for SAS3 and SAS35 devices. Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSathya Prakash <sathya.prakash@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
Added Device ID's for SAS35 devices (Ventura, Crusader, Harpoon & Tomcat) and updated mpi header file for the same. Also added "is_gen35_ioc" to MPT3SAS_ADAPTER structure for identifying SAS35 adapters. Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSathya Prakash <sathya.prakash@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSathya Prakash <sathya.prakash@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
Removing macro "MPT_DEVICE_TLR_ON" defined in header file as its unused Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSathya Prakash <sathya.prakash@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Reviewed-by: NHannes Reinecke <hare@suse.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath Prabu Subramani 提交于
When device missing event arrives, device_remove_in_progress bit will be set and hence driver has to stop sending IOCTL commands.Now the check has been added in IOCTL path to test device_remove_in_progress bit is set, if so then IOCTL will be failed printing failure message. Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NSathya Prakash <sathya.prakash@broadcom.com> Signed-off-by: NSuganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 09 8月, 2016 3 次提交
-
-
由 Calvin Owens 提交于
With the exception of a single call to wait_for_doorbell_int(), all this conditional sleeping code is dead. So delete it. Signed-off-by: NCalvin Owens <calvinowens@fb.com> Acked-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Calvin Owens 提交于
This flag that conditionally acquires the mutex is confusing and prone to bugginess: refactor it into two separate function calls, and make the unlocked one complain if it's called outside the mutex. Signed-off-by: NCalvin Owens <calvinowens@fb.com> Acked-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Calvin Owens 提交于
We blindly trust the hardware to give us NUL-terminated strings, which is a bad idea because it doesn't always do that. For example: [ 481.184784] mpt3sas_cm0: enclosure level(0x0000), connector name( \x3) In this case, connector_name is four spaces. We got lucky here because the 2nd byte beyond our character array happens to be a NUL. Fix this by explicitly writing '\0' to the end of the string to ensure we don't run off the edge of the world in printk(). Signed-off-by: NCalvin Owens <calvinowens@fb.com> Acked-by: NChaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 12 5月, 2016 3 次提交
-
-
由 Chaitra P B 提交于
Replaced mpt3sas_base_flush_reply_queues() with mpt3sas_base_sync_reply_irqs(),as mpt3sas_base_flush_reply_queues() skips over reply queues that are currently busy (i.e. being handled by interrupt processing in another core). If a reply queue is busy, then call to synchronize_irq()in mpt3sas_base_sync_reply_irqs()make sures the other core has finished flushing the queue and completed any calls to the mid-layer scsi_done() routine. Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Chaitra P B 提交于
Set maximum transfer length per IO on RAID volumes to 4MB by setting VD's queue's max_sector to 8192. Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Chaitra P B 提交于
Bump mpt3sas driver version from 12.100.00.00 to 13.100.00.00 Signed-off-by: NChaitra P B <chaitra.basappa@broadcom.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 16 4月, 2016 1 次提交
-
-
由 Ming Lin 提交于
Rename SCSI_MAX_SG_SEGMENTS to SG_CHUNK_SIZE, which means the amount we fit into a single scatterlist chunk. Rename SCSI_MAX_SG_CHAIN_SEGMENTS to SG_MAX_SEGMENTS. Will move these 2 generic definitions to scatterlist.h later. Reviewed-by: NChristoph Hellwig <hch@lst.de> Acked-by: Bart Van Assche <bart.vanassche@sandisk.com> (for ib_srp changes) Signed-off-by: NMing Lin <ming.l@ssi.samsung.com> Acked-by: NTejun Heo <tj@kernel.org> Reviewed-by: NSagi Grimberg <sagi@grimberg.me> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
- 24 2月, 2016 5 次提交
-
-
由 Suganath prabu Subramani 提交于
Bump mpt3sas driver version from 09.102.00.00 to 12.100.00.00 Signed-off-by: NSuganath prabu Subramani <suganath-prabu.subramani@avagotech.com> Signed-off-by: NChaitra P B <chaitra.basappa@avagotech.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath prabu Subramani 提交于
Track msix of each IO and use the same msix for issuing abort to timed out IO. With this driver will process IO's reply first followed by TM. Signed-off-by: NSuganath prabu Subramani <suganath-prabu.subramani@avagotech.com> Signed-off-by: NChaitra P B <chaitra.basappa@avagotech.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath prabu Subramani 提交于
Added support for configurable Chain Frame Size. Calculate the Chain Message Frame size from the IOCMaxChainSegementSize (iocfacts). Applicable only for mpt3sas/SAS3.0 HBA's. Signed-off-by: NSuganath prabu Subramani <suganath-prabu.subramani@avagotech.com> Signed-off-by: NChaitra P B <chaitra.basappa@avagotech.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath prabu Subramani 提交于
Driver assumes HighPriority credit as part of Global credit. But, Firmware treats HighPriority credit value and global cedits as two different values. Changed host queue algorithm to treat global credits and highPriority credits as two different values. Signed-off-by: NSuganath prabu Subramani <suganath-prabu.subramani@avagotech.com> Signed-off-by: NChaitra P B <chaitra.basappa@avagotech.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-
由 Suganath prabu Subramani 提交于
Never block the SEP device (i.e. Never invoke the scsi_internal_device_block() API for SEP device) even for the delay not responding events. Blocking the SEP device will create a deadlock while adding any device to the OS. Signed-off-by: NSuganath prabu Subramani <suganath-prabu.subramani@avagotech.com> Signed-off-by: NChaitra P B <chaitra.basappa@avagotech.com> Reviewed-by: NTomas Henzl <thenzl@redhat.com> Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
-