All of lore.kernel.org
 help / color / mirror / Atom feed
* SG does not ignore dxferp (direct io + mmap)
@ 2016-11-20 16:02 Eyal Ben David
  2016-11-21  0:04 ` Laurence Oberman
  0 siblings, 1 reply; 40+ messages in thread
From: Eyal Ben David @ 2016-11-20 16:02 UTC (permalink / raw)
  To: linux-scsi

Hi all,

We have some IO utility that perform the IOs using sg and direct io with mmap.
Our current systems are Ubuntu 14.04, RHEL 6,7
The IO utility always set dxferp to either the address or mmap of
other allocation (valloc)
Setting dxferp was harmless since SG is supposed to ignore the address
if mmap IO is selected.
When porting to Ubuntu 16.04, we had a corruption problem - first byte
of a read task is always 0.
When setting dxferp as NULL the corruption does not occur any more.
This is a regression and not according to SCSI generic documentation.

I wrote a small program that shows the change:

Read indirect (no mmap), lba=0:
=======================
$ ./sg_mmap_read -d /dev/sg0 -l 0
0000000 eb 63 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0

Read with mmap, lba=0, dxferp=NULL:
============================
$ ./sg_mmap_read -d /dev/sg0 -l 0 -m
0000000 eb 63 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0

Read with mmap, lba=0, dxferp=address from mmap
======================================
$ ./sg_mmap_read -d /dev/sg0 -l 0 -m -b
0000000 00 63 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0

On the older systems all results are the same.

Thanks for any answer!

^ permalink raw reply	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2016-12-02 20:37 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-20 16:02 SG does not ignore dxferp (direct io + mmap) Eyal Ben David
2016-11-21  0:04 ` Laurence Oberman
2016-11-21  9:23   ` Eyal Ben David
2016-11-21 14:24     ` Ewan D. Milne
2016-11-21 14:54       ` Laurence Oberman
2016-11-21 14:55       ` Eyal Ben David
2016-11-21 15:12         ` Laurence Oberman
2016-11-21 15:15         ` Johannes Thumshirn
2016-11-21 15:44           ` Johannes Thumshirn
2016-11-21 16:04             ` Eyal Ben David
2016-11-21 16:25           ` Ewan D. Milne
2016-11-21 17:34       ` Douglas Gilbert
2016-11-21 18:24         ` Ewan D. Milne
2016-11-22  8:37           ` Johannes Thumshirn
2016-11-22 13:48             ` Eyal Ben David
2016-11-22 15:31               ` Laurence Oberman
2016-11-22 16:00                 ` Johannes Thumshirn
2016-11-22 16:28                   ` Eyal Ben David
2016-11-22 18:30             ` Ewan D. Milne
2016-11-22 18:46               ` Laurence Oberman
2016-11-22 20:55               ` Eyal Ben David
2016-11-23 18:55                 ` Laurence Oberman
2016-11-23 20:22                   ` Ewan D. Milne
2016-11-25  8:07                     ` Johannes Thumshirn
2016-11-25 11:20                       ` Eyal Ben David
2016-11-25 11:53                         ` Johannes Thumshirn
2016-11-25 12:28                           ` Johannes Thumshirn
2016-11-25 12:36                           ` Eyal Ben David
2016-11-25 14:46                             ` Laurence Oberman
2016-11-28 10:30                               ` Johannes Thumshirn
2016-11-25 17:56                       ` Ewan Milne
2016-11-25 18:01                         ` Laurence Oberman
2016-11-30 16:26                         ` Ewan D. Milne
2016-12-01 13:40                           ` Martin K. Petersen
2016-12-02 12:21                             ` Christoph Hellwig
2016-12-02 13:29                               ` Ewan D. Milne
2016-12-02 14:10                                 ` Hannes Reinecke
2016-12-02 14:17                                   ` Laurence Oberman
2016-12-02 19:29                                   ` Ewan D. Milne
2016-12-02 20:37                             ` Ewan D. Milne

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.