Smart plugging of multiple devices connected to a single controller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jens,

in an effort to avoid calling the ->request_fn() from hard irq context
in ide, a patch like the one attached below would seem convenient (not
even compile tested yet). However, before implementing this or, indeed,
in case you should outright reject this patch, I'd like to ask for your
opinion about a more general approach: Since ide, scsi and libata (once
it has moved out of scsi) have very similar issues with devices that
cannot process the request queue in parallel (typically because they are
connected to the same controller), would it be appropriate to deal with
that in the block layer directly? Currently, I'm mainly concerned with
the problem that devices connected to the same controller are served
without too much discrimination due to races in the (un)plug logic,
which is currently being dealt with more or less cleverly in scsi / ide.
Generally though, there might be other shared resources (like a tag map,
etc.) that could be maintained in a in a block layer structure similar to
struct Scsi_Host. All request queues belonging to such a group could be
added to a circular link list rooted at the structure containing the
shared resources, i.e. the unplug_timer and whatever you deem adequate
to be moved there.

What do you think about it?

Regards,

Elias
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux