[systemd-devel] [PATCH] readahead: ARM: fix rotational media detection for MMC

Chaiken, Alison Alison_Chaiken at mentor.com
Tue May 13 07:14:20 PDT 2014


I wrote:
> The ARM runtime reports the major device type associated with
> /proc/self/mountinfo as MMC_BLOCK_MAJOR, causing on_ssd() in
> readahead-common.c to return false.   on_ssd() should return true, as
> MMC like SSD is not rotational.

Lennart writes:
> Not following here. fs_on_ssd() will actually check for the high-level
> ID_SSD property, as well as the "queue/rotational" sysfs attribute for
> the block device.

Those other checks are not reached, as the beginning of fs_on_ssd() has
        if (major(st.st_dev) == 0) {}
encapsulating them, and major(st.st_dev)=MMC_BLOCK_MAJOR, not 0.    My first attempt to fix the problem was

+    if (streq(opts, "mmc") || startswith(opts, "mmc,") || endswith(opts, ",mmc") || strstr(opts, ",mmc,"))

but that statement is also not reached.   Likely the best practice is also to compare MTD_BLOCK_MAJOR, but since I have no simple way to test that case, I didn't include it.   That's why I put the change inside an #ifdef.   As Auke points out in systemd-commits, where I erroneously attempted to post this patch, any arch using an MMC would consider it non-rotational.

-- Alison Chaiken
   Mentor Graphics, from rainy Hildesheim


More information about the systemd-devel mailing list