lkml.org 
[lkml]   [2009]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] mtd: fix mtd_blkdevs problem with caches on some architectures (2.6.31)
    On Fri, 20 Nov 2009 16:37:51 -0800
    Andrew Morton <akpm@linux-foundation.org> wrote:

    > Your patch fixes bascially the same problem in MTD as we have in AOE.
    > And it introduces the same problem as well - pointless empty
    > cache-thrashing loops on architectures for which flush_dcache_page() is
    > a no-op.
    >
    > What would be better here would be for block core to add a new
    > rq_flush_dcache_pages() and bio_flush_dcache_pages() which the drivers
    > can call. Those functions would be a no-op on architectures which
    > don't need them.

    Do you mean something like this?

    in include/linux/bio.h

    #ifdef SOMETHING_LIKE_CONFIG_CPU_HAS_DCACHE_ALIAS
    extern void bio_flush_dcache_pages(struct bio *bi);
    #else
    static inline void bio_flush_dcache_pages(struct bio *bi)
    {
    }
    #endif /* SOMETHING_LIKE_CONFIG_CPU_HAS_DCACHE_ALIAS */

    in fs/bio.c

    void bio_flush_dcache_pages(struct bio *bi)
    {
    int i;
    struct bio_vec* bvec;

    rq_for_each_segment(bvec, bio, i)
    flush_dcache_page(bvec->bv_page);
    }

    in include/linux/blkdev.h

    #ifdef SOMETHING_LIKE_CONFIG_CPU_HAS_DCACHE_ALIAS
    extern void rq_flush_dcache_pages(struct request *rq);
    #else
    static inline void rq_flush_dcache_pages(struct request *rq)
    {
    }
    #endif

    in block/blk-core.c

    void rq_flush_dcache_pages(struct request *rq)
    {
    struct req_iterator iter;
    struct bio_vec* bvec;

    rq_for_each_segment(bvec, bio, iter)
    flush_dcache_page(bvec->bv_page);
    }

    And SOMETHING_LIKE_CONFIG_CPU_HAS_DCACHE_ALIAS should be defined
    in Kconfigs for each architecture that requires this fix. I think
    this is good solution and if you think the same I can create the
    patch.

    --
    Ilya Loginov <isloginov@gmail.com>


    \
     
     \ /
      Last update: 2009-11-21 15:07    [W:0.043 / U:60.512 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site