05 Apr, 2016

1 commit

  • PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time
    ago with promise that one day it will be possible to implement page
    cache with bigger chunks than PAGE_SIZE.

    This promise never materialized. And unlikely will.

    We have many places where PAGE_CACHE_SIZE assumed to be equal to
    PAGE_SIZE. And it's constant source of confusion on whether
    PAGE_CACHE_* or PAGE_* constant should be used in a particular case,
    especially on the border between fs and mm.

    Global switching to PAGE_CACHE_SIZE != PAGE_SIZE would cause to much
    breakage to be doable.

    Let's stop pretending that pages in page cache are special. They are
    not.

    The changes are pretty straight-forward:

    - << (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> ;

    - >> (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> ;

    - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -> PAGE_{SIZE,SHIFT,MASK,ALIGN};

    - page_cache_get() -> get_page();

    - page_cache_release() -> put_page();

    This patch contains automated changes generated with coccinelle using
    script below. For some reason, coccinelle doesn't patch header files.
    I've called spatch for them manually.

    The only adjustment after coccinelle is revert of changes to
    PAGE_CAHCE_ALIGN definition: we are going to drop it later.

    There are few places in the code where coccinelle didn't reach. I'll
    fix them manually in a separate patch. Comments and documentation also
    will be addressed with the separate patch.

    virtual patch

    @@
    expression E;
    @@
    - E << (PAGE_CACHE_SHIFT - PAGE_SHIFT)
    + E

    @@
    expression E;
    @@
    - E >> (PAGE_CACHE_SHIFT - PAGE_SHIFT)
    + E

    @@
    @@
    - PAGE_CACHE_SHIFT
    + PAGE_SHIFT

    @@
    @@
    - PAGE_CACHE_SIZE
    + PAGE_SIZE

    @@
    @@
    - PAGE_CACHE_MASK
    + PAGE_MASK

    @@
    expression E;
    @@
    - PAGE_CACHE_ALIGN(E)
    + PAGE_ALIGN(E)

    @@
    expression E;
    @@
    - page_cache_get(E)
    + get_page(E)

    @@
    expression E;
    @@
    - page_cache_release(E)
    + put_page(E)

    Signed-off-by: Kirill A. Shutemov
    Acked-by: Michal Hocko
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     

02 Feb, 2012

1 commit

  • This patch fixes merge conflict resolution breakage introduced by merge
    d3712b9dfcf4 ("Merge tag 'for-linus' of git://github.com/prasad-joshi/logfs_upstream").

    The commit changed 'mtd_can_have_bb()' function and made it always
    return zero, which is incorrect. Instead, we need it to return whether
    the underlying flash device can have bad eraseblocks or not. UBI needs
    this information because it affects how it handles the underlying flash.
    E.g., if the underlying flash is NOR, it cannot have bad blocks and any
    write or erase error is fatal, and all we can do is to switch to R/O
    mode. We do not need to reserve a pool of good eraseblocks for bad
    eraseblocks handling, and so on.

    This patch also removes 'mtd_can_have_bb()' invocations from Logfs to
    ensure correct Logfs behavior.

    I've tested that with this patch UBI works on top of NOR and NAND
    flashes emulated by mtdram and nandsim correspondingly.

    This patch is based on patch from Linus Torvalds.

    Signed-off-by: Artem Bityutskiy
    Acked-by: Jörn Engel
    Acked-by: Prasad Joshi
    Acked-by: Brian Norris
    Signed-off-by: Linus Torvalds

    Artem Bityutskiy
     

10 Jan, 2012

8 commits


31 Mar, 2011

1 commit


29 Oct, 2010

4 commits


08 May, 2010

1 commit


07 May, 2010

1 commit


05 Mar, 2010

1 commit

  • Erases for block devices were always just emulated by writing 0xff.
    Some time back the write was removed and only the page cache was
    changed to 0xff. Superficialy a good idea with two problems:
    1. Touching the page cache isn't necessary either.
    2. However, writing out 0xff _is_ necessary for the journal. As the
    journal is scanned linearly, an old non-overwritten commit entry
    can be used on next mount and cause havoc.

    This should fix both aspects.

    Joern Engel
     

21 Nov, 2009

1 commit