Re: [PATCH #upstream-fixes 2/4] libata: beef up iterators

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

 



Tejun Heo wrote:
There currently are the following loop constructs.

* __ata_port_for_each_link() for all available links
* ata_port_for_each_link() for edge links
* ata_link_for_each_dev() for all devices
* ata_link_for_each_dev_reverse() for all devices in reverse order

Now there's a need for loop construct which is similar to
__ata_port_for_each_link() but iterates over PMP links before the host
link.  Instead of adding another one with long name, do the following
cleanup.

* Implement and export ata_link_next() and ata_dev_next() which take
  @mode parameter and can be used to build custom loop.
* Implement ata_for_each_link() and ata_for_each_dev() which take
  looping mode explicitly.

The following iteration modes are implemented.

* ATA_LITER_EDGE		: loop over edge links
* ATA_LITER_HOST_FIRST		: loop over all links, host link first
* ATA_LITER_PMP_FIRST		: loop over all links, PMP links first

* ATA_DITER_ENABLED		: loop over enabled devices
* ATA_DITER_ENABLED_REVERSE	: loop over enabled devices in reverse order
* ATA_DITER_ALL			: loop over all devices
* ATA_DITER_ALL_REVERSE		: loop over all devices in reverse order

This change removes exlicit device enabledness checks from many loops
and makes it clear which ones are iterated over in which direction.

Signed-off-by: Tejun Heo <tj@xxxxxxxxxx>
---
 drivers/ata/ahci.c           |    8 -
 drivers/ata/ata_generic.c    |    5 -
 drivers/ata/libata-acpi.c    |   19 +---
 drivers/ata/libata-core.c    |  183 ++++++++++++++++++++++++++++---------------
 drivers/ata/libata-eh.c      |   84 ++++++++-----------
 drivers/ata/libata-pmp.c     |   22 ++---
 drivers/ata/libata-scsi.c    |   22 ++---
 drivers/ata/pata_it821x.c    |   34 +++----
 drivers/ata/pata_ixp4xx_cf.c |   14 +--
 drivers/ata/pata_legacy.c    |   17 +--
 drivers/ata/pata_pdc2027x.c  |   27 ++----
 drivers/ata/pata_platform.c  |   14 +--
 drivers/ata/pata_rz1000.c    |   16 +--
drivers/ata/sata_sil.c | 2 include/linux/libata.h | 50 +++++++----
 15 files changed, 279 insertions(+), 238 deletions(-)

ACK... for 2.6.29. I think this is too much change for -rc2. It's a good idea though.

Also, it could use more documentation than just the commit message... something that programmers can easily refer to (header file comment?)

	Jeff




--
To unsubscribe from this list: 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