BUG? ondemand_readahead() exeeds bdi->io_pages

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

 



Hi there,

I'm investigating an problem where I see block I/O twice the maximum 
allowed size in max_hw_sectors_kb. In my case the device driver simply
fails. I have to investigate that part further... Nevertheless I think there
might be some strange calculation bug in ondemand_readahead().

Assume user reads 1M of data and the device driver can only handle
this 1M. In initial_readahead we will set ra->size to 1M and async size
to 1M too.

initial_readahead:
  ra->start = offset;
  ra->size = get_init_ra_size(req_size, max_pages);
  ra->async_size = ra->size > req_size ? ra->size - req_size : ra->size;

In the readit part the check succeeds and the function will double
the amount to read ahead. 

readit:
  /*
   * Will this read hit the readahead marker made by itself?
   * If so, trigger the readahead marker hit now, and merge
   * the resulted next readahead window into the current one.
   */
  if (offset == ra->start && ra->size == ra->async_size) {
    ra->async_size = get_next_ra_size(ra, max_pages);
    ra->size += ra->async_size;
  }

Btrace of dd if=/dev/fioa1 of=/dev/null bs=1M count=1 gives:

253,0   20        1     0.000000000 19784  A   R 2048 + 4096 <- (253,1) 0
253,0   20        2     0.000003330 19784  Q   R 2048 + 4096 [dd]
253,0   20        3     0.000235833 19784  C   R 2048 + 4096 [0]

Initial commit was 122a21d11... (readahead: on-demand readahead 
logic) and the readit part was extended by 51daa88eb... (readahead: 
remove sync/async readahead call dependency)

I'm lost where one should implement a fix. In the first part of
the calculation or the second? Or am I totally wrong?

Thanks for your help and best regards.

Markus

****************************************************************************
Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte
Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail
irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und
vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte
Weitergabe dieser Mail ist nicht gestattet.

�ber das Internet versandte E-Mails können unter fremden Namen erstellt oder
manipuliert werden. Deshalb ist diese als E-Mail verschickte Nachricht keine
rechtsverbindliche Willenserklärung.

Collogia AG
Ubierring 11
D-50678 Köln

Vorstand:
Kadir Akin
Dr. Michael Höhnerbach

Vorsitzender des Aufsichtsrates:
Hans Kristian Langva

Registergericht: Amtsgericht Köln
Registernummer: HRB 52 497

This e-mail may contain confidential and/or privileged information. If you
are not the intended recipient (or have received this e-mail in error)
please notify the sender immediately and destroy this e-mail. Any
unauthorized copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.

e-mails sent over the internet may have been written under a wrong name or
been manipulated. That is why this message sent as an e-mail is not a
legally binding declaration of intention.

Collogia AG
Ubierring 11
D-50678 Köln

executive board:
Kadir Akin
Dr. Michael Höhnerbach

President of the supervisory board:
Hans Kristian Langva

Registry office: district court Cologne
Register number: HRB 52 497

****************************************************************************

[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux