lkml.org 
[lkml]   [2020]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] fs/squashfs: Remove caching of errors in squashfs.
    Date
    If squashfs encounters a read error when reading a block this error will
    be cached. When the underlying problem that caused this error is fixed,
    squashfs will still report the previous error, even though, a re-read
    would now be successful.

    This patch fixes this by setting the block field of the cache entry to
    SQUASHFS_INVALID_BLK if an error was encountered. This prevents the cache
    entry lookup from simply returning the cache entry with the previous error.

    With this patch a mounted squashfs file system can recover from read
    errors. Whereas previously this would have required a full remount.

    Signed-off-by: Mikael Szreder <miksz574@student.liu.se>
    ---
    fs/squashfs/cache.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/fs/squashfs/cache.c b/fs/squashfs/cache.c
    index 5062326d0efb..020fded42a6b 100644
    --- a/fs/squashfs/cache.c
    +++ b/fs/squashfs/cache.c
    @@ -112,8 +112,10 @@ struct squashfs_cache_entry *squashfs_cache_get(struct super_block *sb,

    spin_lock(&cache->lock);

    - if (entry->length < 0)
    + if (entry->length < 0) {
    + entry->block = SQUASHFS_INVALID_BLK;
    entry->error = entry->length;
    + }

    entry->pending = 0;

    --
    2.28.0

    \
     
     \ /
      Last update: 2020-10-19 15:45    [W:7.207 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site