Messages in this thread | | | Date | Sat, 26 Jan 2013 11:18:01 +0100 | From | Paolo Bonzini <> | Subject | Re: [PATCH 06/13] sg_io: whitelist a few more commands for multimedia devices |
| |
Il 26/01/2013 00:47, Tejun Heo ha scritto: >> > If I make a whitelist with all the commands that Linux sends, I'll have >> > many new commands in the whitelist and no old commands. The new >> > commands didn't exist when old drives were sold, so they are "dangerous" >> > in your opinion. At that point I might as well keep the whitelist >> > empty, no? > Let's not go to extremes. It's not about theoretic correctness.
Once you start looking at what is already in the list, you'll see that your problem is entirely theoretical, and any choice is going to be arbitrary. There are already plenty of enabled commands that are not implemented by most SCSI devices (not just cheap USB enclosures), and I don't see what the difference should be between say "LOG SELECT" and "ORWRITE".
> It's about how to appraoch a possibly messy practical problem. To me, > it seems natural to be conservative on this and add what's being > acitvely used, which as a bonus will also give us at least some > chance of evaluating what we have and why later on if it ever needs > to be changed. > > I'm just not comfortable with adding a bunch of commands by simply > scanning the specs. Let's at least have some backing data and > justification for exposing new ones. I really don't think that's too > much to ask. Start with minimal set. Grow it as needed. We can > always grow but the other direction is much harder.
Ok, so I looked at the list. The vast majority of the commands are added because Linux itself is using them.
Considering only commands that have a "D" (i.e. are supported by "normal" disks), these maybe can be removed from patch 9. Probably no one would notice:
+ sgio_bitmap_set(0x07, D| W| O , write); // REASSIGN BLOCKS + sgio_bitmap_set(0x29, D| W|R|O , read); // READ GENERATION + sgio_bitmap_set(0x2C, D| R|O , write); // ERASE(10) + sgio_bitmap_set(0x8B, D , write); // ORWRITE
These two are no-ops so I won't cry too much for them:
+ sgio_bitmap_set(0x34, D| W| O| K , read); // PRE-FETCH(10) + sgio_bitmap_set(0x90, D| W| O| B , read); // PRE-FETCH(16)
Everything else has to stay.
For tapes and media changers, all of the commands have to stay.
Paolo
| |