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;
}