[lkml]   [2004]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subject[CHECKER] warnings in fs/ext3/namei.c (2.4.19) where disk read errors get ignored, causing non-empty dir to be deleted

    We checked EXT3 filesystem on 2.4.19 recently and found 2 cases that look
    like bugs. For both of the cases, disk read errors are ignored, which
    appears to cause a non-empty directory to be wrongly deleted or a dir to
    contain more than one entries with identical names.

    I'm not sure if they are real bugs or not, so your confirmations
    /clarifications are appericated.

    Please let me know if anything isn't clear

    all warnings are in file fs/ext3/namei.c

    [BUG] A non-empty dir may be deleted because ext3_read errors are ignored
    by ext3_find_entry. empty_dir is called whenenver ext3_rmdir tries to
    remove a directory.

    static int empty_dir (struct inode * inode)
    bh = ext3_bread (NULL, inode,
    offset >> EXT3_BLOCK_SIZE_BITS(sb), 0, &err);
    if (!bh) {
    #if 0
    ext3_error (sb, "empty_dir",
    "directory #%lu contains a hole at offset %lu",
    inode->i_ino, offset);
    offset += sb->s_blocksize;
    ERROR ---> continue;
    de = (struct ext3_dir_entry_2 *) bh->b_data;

    [BUG] A dir may end up containing more than one entries with identical
    names because because disk read errors are ignored by ext3_find_entry.
    ext3_find_entry is called by lots of other ext3 functions (ext3_add_entry,
    ext3_unlink, ext3_rename)

    static struct buffer_head * ext3_find_entry (struct dentry *dentry,
    struct ext3_dir_entry_2 ** res_dir)
    if ((bh = bh_use[ra_ptr++]) == NULL)
    goto next;
    if (!buffer_uptodate(bh)) {
    /* read error, skip block & hope for the best */
    ERROR ---> goto next;

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 14:02    [W:0.022 / U:2.868 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site