NTFS: Handle the recently introduced -ENAMETOOLONG return value from
authorAnton Altaparmakov <aia21@cantab.net>
Thu, 23 Mar 2006 16:25:23 +0000 (16:25 +0000)
committerAnton Altaparmakov <aia21@cantab.net>
Thu, 23 Mar 2006 16:25:23 +0000 (16:25 +0000)
      fs/ntfs/unistr.c::ntfs_nlstoucs() in fs/ntfs/namei.c::ntfs_lookup().

Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
fs/ntfs/ChangeLog
fs/ntfs/namei.c

index d200315..9fb08ef 100644 (file)
@@ -16,8 +16,6 @@ ToDo/Notes:
          inode having been discarded already.  Whether this can actually ever
          happen is unclear however so it is worth waiting until someone hits
          the problem.
          inode having been discarded already.  Whether this can actually ever
          happen is unclear however so it is worth waiting until someone hits
          the problem.
-       - Enable the code for setting the NT4 compatibility flag when we start
-         making NTFS 1.2 specific modifications.
 
 2.1.27 - Various bug fixes and cleanups.
 
 
 2.1.27 - Various bug fixes and cleanups.
 
@@ -43,6 +41,8 @@ ToDo/Notes:
          have an index allocation attribute failed.
        - Add a missing call to flush_dcache_mft_record_page() in
          fs/ntfs/inode.c::ntfs_write_inode().
          have an index allocation attribute failed.
        - Add a missing call to flush_dcache_mft_record_page() in
          fs/ntfs/inode.c::ntfs_write_inode().
+       - Handle the recently introduced -ENAMETOOLONG return value from
+         fs/ntfs/unistr.c::ntfs_nlstoucs() in fs/ntfs/namei.c::ntfs_lookup().
 
 2.1.26 - Minor bug fixes and updates.
 
 
 2.1.26 - Minor bug fixes and updates.
 
index 78e0cf7..eddb224 100644 (file)
@@ -115,7 +115,9 @@ static struct dentry *ntfs_lookup(struct inode *dir_ino, struct dentry *dent,
        uname_len = ntfs_nlstoucs(vol, dent->d_name.name, dent->d_name.len,
                        &uname);
        if (uname_len < 0) {
        uname_len = ntfs_nlstoucs(vol, dent->d_name.name, dent->d_name.len,
                        &uname);
        if (uname_len < 0) {
-               ntfs_error(vol->sb, "Failed to convert name to Unicode.");
+               if (uname_len != -ENAMETOOLONG)
+                       ntfs_error(vol->sb, "Failed to convert name to "
+                                       "Unicode.");
                return ERR_PTR(uname_len);
        }
        mref = ntfs_lookup_inode_by_name(NTFS_I(dir_ino), uname, uname_len,
                return ERR_PTR(uname_len);
        }
        mref = ntfs_lookup_inode_by_name(NTFS_I(dir_ino), uname, uname_len,
@@ -157,7 +159,7 @@ static struct dentry *ntfs_lookup(struct inode *dir_ino, struct dentry *dent,
                /* Return the error code. */
                return (struct dentry *)dent_inode;
        }
                /* Return the error code. */
                return (struct dentry *)dent_inode;
        }
-       /* It is guaranteed that name is no longer allocated at this point. */
+       /* It is guaranteed that @name is no longer allocated at this point. */
        if (MREF_ERR(mref) == -ENOENT) {
                ntfs_debug("Entry was not found, adding negative dentry.");
                /* The dcache will handle negative entries. */
        if (MREF_ERR(mref) == -ENOENT) {
                ntfs_debug("Entry was not found, adding negative dentry.");
                /* The dcache will handle negative entries. */
@@ -168,7 +170,6 @@ static struct dentry *ntfs_lookup(struct inode *dir_ino, struct dentry *dent,
        ntfs_error(vol->sb, "ntfs_lookup_ino_by_name() failed with error "
                        "code %i.", -MREF_ERR(mref));
        return ERR_PTR(MREF_ERR(mref));
        ntfs_error(vol->sb, "ntfs_lookup_ino_by_name() failed with error "
                        "code %i.", -MREF_ERR(mref));
        return ERR_PTR(MREF_ERR(mref));
-
        // TODO: Consider moving this lot to a separate function! (AIA)
 handle_name:
    {
        // TODO: Consider moving this lot to a separate function! (AIA)
 handle_name:
    {