|
|
@@ -177,6 +177,9 @@ static int f2fs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
|
|
|
nid_t ino = 0;
|
|
|
int err;
|
|
|
|
|
|
+ if (unlikely(f2fs_cp_error(sbi)))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
err = dquot_initialize(dir);
|
|
|
if (err)
|
|
|
return err;
|
|
|
@@ -221,6 +224,9 @@ static int f2fs_link(struct dentry *old_dentry, struct inode *dir,
|
|
|
struct f2fs_sb_info *sbi = F2FS_I_SB(dir);
|
|
|
int err;
|
|
|
|
|
|
+ if (unlikely(f2fs_cp_error(sbi)))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
if (f2fs_encrypted_inode(dir) &&
|
|
|
!fscrypt_has_permitted_context(dir, inode))
|
|
|
return -EPERM;
|
|
|
@@ -420,6 +426,9 @@ static int f2fs_unlink(struct inode *dir, struct dentry *dentry)
|
|
|
|
|
|
trace_f2fs_unlink_enter(dir, dentry);
|
|
|
|
|
|
+ if (unlikely(f2fs_cp_error(sbi)))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
err = dquot_initialize(dir);
|
|
|
if (err)
|
|
|
return err;
|
|
|
@@ -475,6 +484,9 @@ static int f2fs_symlink(struct inode *dir, struct dentry *dentry,
|
|
|
struct fscrypt_symlink_data *sd = NULL;
|
|
|
int err;
|
|
|
|
|
|
+ if (unlikely(f2fs_cp_error(sbi)))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
if (f2fs_encrypted_inode(dir)) {
|
|
|
err = fscrypt_get_encryption_info(dir);
|
|
|
if (err)
|
|
|
@@ -581,6 +593,9 @@ static int f2fs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
|
|
|
struct inode *inode;
|
|
|
int err;
|
|
|
|
|
|
+ if (unlikely(f2fs_cp_error(sbi)))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
err = dquot_initialize(dir);
|
|
|
if (err)
|
|
|
return err;
|
|
|
@@ -633,6 +648,9 @@ static int f2fs_mknod(struct inode *dir, struct dentry *dentry,
|
|
|
struct inode *inode;
|
|
|
int err = 0;
|
|
|
|
|
|
+ if (unlikely(f2fs_cp_error(sbi)))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
err = dquot_initialize(dir);
|
|
|
if (err)
|
|
|
return err;
|
|
|
@@ -727,6 +745,9 @@ out:
|
|
|
|
|
|
static int f2fs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode)
|
|
|
{
|
|
|
+ if (unlikely(f2fs_cp_error(F2FS_I_SB(dir))))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
if (f2fs_encrypted_inode(dir)) {
|
|
|
int err = fscrypt_get_encryption_info(dir);
|
|
|
if (err)
|
|
|
@@ -738,6 +759,9 @@ static int f2fs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode)
|
|
|
|
|
|
static int f2fs_create_whiteout(struct inode *dir, struct inode **whiteout)
|
|
|
{
|
|
|
+ if (unlikely(f2fs_cp_error(F2FS_I_SB(dir))))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
return __f2fs_tmpfile(dir, NULL, S_IFCHR | WHITEOUT_MODE, whiteout);
|
|
|
}
|
|
|
|
|
|
@@ -757,6 +781,9 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|
|
bool is_old_inline = f2fs_has_inline_dentry(old_dir);
|
|
|
int err = -ENOENT;
|
|
|
|
|
|
+ if (unlikely(f2fs_cp_error(sbi)))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
if ((f2fs_encrypted_inode(old_dir) &&
|
|
|
!fscrypt_has_encryption_key(old_dir)) ||
|
|
|
(f2fs_encrypted_inode(new_dir) &&
|
|
|
@@ -950,6 +977,9 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|
|
int old_nlink = 0, new_nlink = 0;
|
|
|
int err = -ENOENT;
|
|
|
|
|
|
+ if (unlikely(f2fs_cp_error(sbi)))
|
|
|
+ return -EIO;
|
|
|
+
|
|
|
if ((f2fs_encrypted_inode(old_dir) &&
|
|
|
!fscrypt_has_encryption_key(old_dir)) ||
|
|
|
(f2fs_encrypted_inode(new_dir) &&
|