struct uni_name_t uni_name;
        struct super_block *sb = inode->i_sb;
        struct fs_info_t *p_fs = &(EXFAT_SB(sb)->fs_info);
-       int ret;
+       int ret = 0;
 
        /* check the validity of pointer parameters */
        if (!fid || !path || (*path == '\0'))
        pr_debug("%s entered\n", __func__);
 
        err = ffsCreateFile(dir, (u8 *)dentry->d_name.name, FM_REGULAR, &fid);
-       if (err) {
-               if (err == -EINVAL)
-                       err = -EINVAL;
-               else if (err == -EEXIST)
-                       err = -EEXIST;
-               else if (err == -ENOSPC)
-                       err = -ENOSPC;
-               else if (err == -ENAMETOOLONG)
-                       err = -ENAMETOOLONG;
-               else
-                       err = -EIO;
+       if (err)
                goto out;
-       }
+
        INC_IVERSION(dir);
        curtime = current_time(dir);
        dir->i_ctime = curtime;
        EXFAT_I(inode)->fid.size = i_size_read(inode);
 
        err = ffsRemoveFile(dir, &(EXFAT_I(inode)->fid));
-       if (err) {
-               if (err == -EPERM)
-                       err = -EPERM;
-               else
-                       err = -EIO;
+       if (err)
                goto out;
-       }
+
        INC_IVERSION(dir);
        curtime = current_time(dir);
        dir->i_mtime = curtime;
        pr_debug("%s entered\n", __func__);
 
        err = ffsCreateFile(dir, (u8 *)dentry->d_name.name, FM_SYMLINK, &fid);
-       if (err) {
-               if (err == -EINVAL)
-                       err = -EINVAL;
-               else if (err == -EEXIST)
-                       err = -EEXIST;
-               else if (err == -ENOSPC)
-                       err = -ENOSPC;
-               else
-                       err = -EIO;
+       if (err)
                goto out;
-       }
+
 
        err = ffsWriteFile(dir, &fid, (char *)target, len, &ret);
 
        if (err) {
                ffsRemoveFile(dir, &fid);
-
-               if (err == -ENOSPC)
-                       err = -ENOSPC;
-               else
-                       err = -EIO;
                goto out;
        }
 
        pr_debug("%s entered\n", __func__);
 
        err = ffsCreateDir(dir, (u8 *)dentry->d_name.name, &fid);
-       if (err) {
-               if (err == -EINVAL)
-                       err = -EINVAL;
-               else if (err == -EEXIST)
-                       err = -EEXIST;
-               else if (err == -ENOSPC)
-                       err = -ENOSPC;
-               else if (err == -ENAMETOOLONG)
-                       err = -ENAMETOOLONG;
-               else
-                       err = -EIO;
+       if (err)
                goto out;
-       }
+
        INC_IVERSION(dir);
        curtime = current_time(dir);
        dir->i_ctime = curtime;
        EXFAT_I(inode)->fid.size = i_size_read(inode);
 
        err = ffsRemoveDir(dir, &(EXFAT_I(inode)->fid));
-       if (err) {
-               if (err == -EINVAL)
-                       err = -EINVAL;
-               else if (err == -EEXIST)
-                       err = -ENOTEMPTY;
-               else if (err == -ENOENT)
-                       err = -ENOENT;
-               else if (err == -EBUSY)
-                       err = -EBUSY;
-               else
-                       err = -EIO;
+       if (err)
                goto out;
-       }
+
        INC_IVERSION(dir);
        curtime = current_time(dir);
        dir->i_mtime = curtime;
 
        err = ffsMoveFile(old_dir, &(EXFAT_I(old_inode)->fid), new_dir,
                          new_dentry);
-       if (err) {
-               if (err == -EPERM)
-                       err = -EPERM;
-               else if (err == -EINVAL)
-                       err = -EINVAL;
-               else if (err == -EEXIST)
-                       err = -EEXIST;
-               else if (err == -ENOENT)
-                       err = -ENOENT;
-               else if (err == -ENOSPC)
-                       err = -ENOSPC;
-               else
-                       err = -EIO;
+       if (err)
                goto out;
-       }
+
        INC_IVERSION(new_dir);
        curtime = current_time(new_dir);
        new_dir->i_ctime = curtime;
 
        err = ffsMapCluster(inode, clu_offset, &cluster);
 
-       if (err) {
-               if (err == -ENOSPC)
-                       return -ENOSPC;
-               else
-                       return -EIO;
-       } else if (cluster != CLUSTER_32(~0)) {
+       if (!err && (cluster != CLUSTER_32(~0))) {
                *phys = START_SECTOR(cluster) + sec_offset;
                *mapped_blocks = p_fs->sectors_per_clu - sec_offset;
        }