NTFS: Remove all the make_bad_inode() calls. This should only be called
authorAnton Altaparmakov <aia21@cantab.net>
Thu, 23 Mar 2006 15:59:32 +0000 (15:59 +0000)
committerAnton Altaparmakov <aia21@cantab.net>
Thu, 23 Mar 2006 15:59:32 +0000 (15:59 +0000)
      from read inode and new inode code paths.

Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
fs/ntfs/ChangeLog
fs/ntfs/aops.c
fs/ntfs/attrib.c
fs/ntfs/file.c
fs/ntfs/mft.c
fs/ntfs/mft.h

index b5774233ef1dbfb73d7248f95f63f5165f7b403b..13e70d4e2fdb82d6f3957454f1053aff3b1bca8c 100644 (file)
@@ -32,6 +32,8 @@ ToDo/Notes:
          unused, invalid mft records which are the same in both $MFT and
          $MFTMirr.
        - Add support for sparse files which have a compression unit of 0.
+       - Remove all the make_bad_inode() calls.  This should only be called
+         from read inode and new inode code paths.
 
 2.1.26 - Minor bug fixes and updates.
 
index 7c7e313620fa3b6988f0218f8e68c0132eb80cce..1cf105b99202447c0873dd29947413277ae9c048 100644 (file)
@@ -1530,7 +1530,6 @@ err_out:
                                "error %i.", err);
                SetPageError(page);
                NVolSetErrors(ni->vol);
-               make_bad_inode(vi);
        }
        unlock_page(page);
        if (ctx)
index 7a568eb7d80fa0dd70e101ded1870ddc49081fd2..1663f5c3c6aa9d097fffe9ca7fc1d7fdf5d88a0d 100644 (file)
@@ -2438,16 +2438,12 @@ undo_alloc:
                                "chkdsk to recover.", IS_ERR(m) ?
                                "restore attribute search context" :
                                "truncate attribute runlist");
-               make_bad_inode(vi);
-               make_bad_inode(VFS_I(base_ni));
                NVolSetErrors(vol);
        } else if (mp_rebuilt) {
                if (ntfs_attr_record_resize(m, a, attr_len)) {
                        ntfs_error(vol->sb, "Failed to restore attribute "
                                        "record in error code path.  Run "
                                        "chkdsk to recover.");
-                       make_bad_inode(vi);
-                       make_bad_inode(VFS_I(base_ni));
                        NVolSetErrors(vol);
                } else /* if (success) */ {
                        if (ntfs_mapping_pairs_build(vol, (u8*)a + le16_to_cpu(
@@ -2460,8 +2456,6 @@ undo_alloc:
                                                "mapping pairs array in error "
                                                "code path.  Run chkdsk to "
                                                "recover.");
-                               make_bad_inode(vi);
-                               make_bad_inode(VFS_I(base_ni));
                                NVolSetErrors(vol);
                        }
                        flush_dcache_mft_record_page(ctx->ntfs_ino);
index 2e5ba0c535d9cb8bbc7814fe477c4bc470f16f2b..f5d057e4acc2a141e07f3b0a5e2755d3ce93f073 100644 (file)
@@ -1207,8 +1207,6 @@ rl_not_mapped_enoent:
                                        "attribute runlist in error code "
                                        "path.  Run chkdsk to recover the "
                                        "lost cluster.");
-                       make_bad_inode(vi);
-                       make_bad_inode(VFS_I(base_ni));
                        NVolSetErrors(vol);
                } else /* if (success) */ {
                        status.runlist_merged = 0;
@@ -1239,8 +1237,6 @@ rl_not_mapped_enoent:
                        ntfs_error(vol->sb, "Failed to restore attribute "
                                        "record in error code path.  Run "
                                        "chkdsk to recover.");
-                       make_bad_inode(vi);
-                       make_bad_inode(VFS_I(base_ni));
                        NVolSetErrors(vol);
                } else /* if (success) */ {
                        if (ntfs_mapping_pairs_build(vol, (u8*)a +
@@ -1253,8 +1249,6 @@ rl_not_mapped_enoent:
                                                "mapping pairs array in error "
                                                "code path.  Run chkdsk to "
                                                "recover.");
-                               make_bad_inode(vi);
-                               make_bad_inode(VFS_I(base_ni));
                                NVolSetErrors(vol);
                        }
                        flush_dcache_mft_record_page(ctx->ntfs_ino);
@@ -1623,11 +1617,8 @@ err_out:
                unmap_mft_record(base_ni);
        ntfs_error(vi->i_sb, "Failed to update initialized_size/i_size (error "
                        "code %i).", err);
-       if (err != -ENOMEM) {
+       if (err != -ENOMEM)
                NVolSetErrors(ni->vol);
-               make_bad_inode(VFS_I(base_ni));
-               make_bad_inode(vi);
-       }
        return err;
 }
 
@@ -1802,8 +1793,6 @@ err_out:
                ntfs_error(vi->i_sb, "Resident attribute commit write failed "
                                "with error %i.", err);
                NVolSetErrors(ni->vol);
-               make_bad_inode(VFS_I(base_ni));
-               make_bad_inode(vi);
        }
        if (ctx)
                ntfs_attr_put_search_ctx(ctx);
index 6499aafc22582a0891f904468cc5930f0b4f626e..7254391b0e5095e142c559a2dc9360d03b2ecd4d 100644 (file)
@@ -93,6 +93,7 @@ static inline MFT_RECORD *map_mft_record_page(ntfs_inode *ni)
                                "Run chkdsk.", ni->mft_no);
                ntfs_unmap_page(page);
                page = ERR_PTR(-EIO);
+               NVolSetErrors(vol);
        }
 err_out:
        ni->page = NULL;
index 407de2cef1d6592633fa15f62a03ca46b49caa25..639cd1bab08b7919c3307964faaf75f525717950 100644 (file)
@@ -97,10 +97,7 @@ extern int write_mft_record_nolock(ntfs_inode *ni, MFT_RECORD *m, int sync);
  * uptodate.
  *
  * On success, clean the mft record and return 0.  On error, leave the mft
- * record dirty and return -errno.  The caller should call make_bad_inode() on
- * the base inode to ensure no more access happens to this inode.  We do not do
- * it here as the caller may want to finish writing other extent mft records
- * first to minimize on-disk metadata inconsistencies.
+ * record dirty and return -errno.
  */
 static inline int write_mft_record(ntfs_inode *ni, MFT_RECORD *m, int sync)
 {