On 25/06/2015 18:12, Laurent Vivier wrote:
>
>
> On 25/06/2015 17:48, Paolo Bonzini wrote:
>>
>> On 25/06/2015 17:32, Programmingkid wrote:
>>>> I think we are going to have to agree to disagree. I have never
>>>> used the /dev/sr(0 | 1) devices and don't see how they would be
>>>> effected by this patch. Are you trying to say the /dev/sr(0 | 1)
>>>> devices *should* be handled by this patch?
>>>
>>> Thinking about your question some more, I see what you mean. On Linux
>>> /dev/sr0 refers to the cdrom drive. Also on Linux, the /dev/cdrom
>>> link refers to the /dev/sr0 device file. So if you just use
>>> /dev/cdrom, you are good.
>>
>> Well, that's not how things work.
>>
>> If you do things like that, you end up with a bunch of hacks, not with a
>> decent piece of software.
>>
>> There is support for CD-ROM passthrough on Linux and FreeBSD in
>> block/raw-posix.c. Perhaps the FreeBSD support can be extended to OS X
>> as well.
>>
>
> In fact, programmingkid, you should fix it in hdev_open() where there is
> already a #if __APPLE__ .
>
> Paolo, I agree with you but :
>
> hdev_open()
>
> #if defined(__linux__)
> {
> char resolved_path[ MAXPATHLEN ], *temp;
>
> temp = realpath(filename, resolved_path);
> if (temp && strstart(temp, "/dev/sg", NULL)) {
> bs->sg = 1;
> }
> #endif
>
> I'm wondering who had this strange idea... :)
I was very scared to type "git blame" here. :) But the question is also
where to put the checks. Putting it at a random place in block.c is not
a good idea.
But yes, this is also bad. It should use stat and check the major/minor
numbers.
Paolo