Re: [PATCH 1/3] libata: implement hotplug by polling

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

 



Jeff Garzik wrote:
NAK, there is no reason why a global poll list is needed. Simply having a struct workqueue in each schedule-able entity implicitly creates such a list. But regardless, this is another example of adding cross-controller synchronization, where none is needed.

If the worker fired per-host_set, then you could use an ata_port dynamic flag to indicate the poll-active ports, for the ata_hp_poll_worker() loop.

If the worker fires per-port, then no loop or mutex is needed at all. You could simply call the hp_poll hook.

It was basically an optimization to reduce storage usage and spread all polling operations at least by polling interval even when there are many ports to poll. Cross-port synchronization aside, it's very simple too. Hmm... I don't think it makes much difference either way though. I'll convert to per-port workqueue + timer.

@@ -633,6 +637,10 @@ struct ata_port_operations {
     void (*error_handler) (struct ata_port *ap);
     void (*post_internal_cmd) (struct ata_queued_cmd *qc);
+ void (*hp_poll_activate) (struct ata_port *ap);
+    void (*hp_poll_deactivate) (struct ata_port *ap);
+    int (*hp_poll) (struct ata_port *ap);
+
     irqreturn_t (*irq_handler)(int, void *, struct pt_regs *);
     void (*irq_clear) (struct ata_port *);

All new hooks require at least a one-two sentence description in the DocBook docs, telling driver writers how to use them.

Will do.

--
tejun

-
: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux