diff options
Diffstat (limited to 'fs/ocfs2/file.c')
-rw-r--r-- | fs/ocfs2/file.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 719f7f4c7a37..7210583b472f 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c | |||
@@ -105,8 +105,11 @@ static int ocfs2_file_open(struct inode *inode, struct file *file) | |||
105 | file->f_path.dentry->d_name.len, | 105 | file->f_path.dentry->d_name.len, |
106 | file->f_path.dentry->d_name.name, mode); | 106 | file->f_path.dentry->d_name.name, mode); |
107 | 107 | ||
108 | if (file->f_mode & FMODE_WRITE) | 108 | if (file->f_mode & FMODE_WRITE) { |
109 | dquot_initialize(inode); | 109 | status = dquot_initialize(inode); |
110 | if (status) | ||
111 | goto leave; | ||
112 | } | ||
110 | 113 | ||
111 | spin_lock(&oi->ip_lock); | 114 | spin_lock(&oi->ip_lock); |
112 | 115 | ||
@@ -1155,8 +1158,11 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr) | |||
1155 | if (status) | 1158 | if (status) |
1156 | return status; | 1159 | return status; |
1157 | 1160 | ||
1158 | if (is_quota_modification(inode, attr)) | 1161 | if (is_quota_modification(inode, attr)) { |
1159 | dquot_initialize(inode); | 1162 | status = dquot_initialize(inode); |
1163 | if (status) | ||
1164 | return status; | ||
1165 | } | ||
1160 | size_change = S_ISREG(inode->i_mode) && attr->ia_valid & ATTR_SIZE; | 1166 | size_change = S_ISREG(inode->i_mode) && attr->ia_valid & ATTR_SIZE; |
1161 | if (size_change) { | 1167 | if (size_change) { |
1162 | status = ocfs2_rw_lock(inode, 1); | 1168 | status = ocfs2_rw_lock(inode, 1); |
@@ -1209,8 +1215,8 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr) | |||
1209 | && OCFS2_HAS_RO_COMPAT_FEATURE(sb, | 1215 | && OCFS2_HAS_RO_COMPAT_FEATURE(sb, |
1210 | OCFS2_FEATURE_RO_COMPAT_USRQUOTA)) { | 1216 | OCFS2_FEATURE_RO_COMPAT_USRQUOTA)) { |
1211 | transfer_to[USRQUOTA] = dqget(sb, make_kqid_uid(attr->ia_uid)); | 1217 | transfer_to[USRQUOTA] = dqget(sb, make_kqid_uid(attr->ia_uid)); |
1212 | if (!transfer_to[USRQUOTA]) { | 1218 | if (IS_ERR(transfer_to[USRQUOTA])) { |
1213 | status = -ESRCH; | 1219 | status = PTR_ERR(transfer_to[USRQUOTA]); |
1214 | goto bail_unlock; | 1220 | goto bail_unlock; |
1215 | } | 1221 | } |
1216 | } | 1222 | } |
@@ -1218,8 +1224,8 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr) | |||
1218 | && OCFS2_HAS_RO_COMPAT_FEATURE(sb, | 1224 | && OCFS2_HAS_RO_COMPAT_FEATURE(sb, |
1219 | OCFS2_FEATURE_RO_COMPAT_GRPQUOTA)) { | 1225 | OCFS2_FEATURE_RO_COMPAT_GRPQUOTA)) { |
1220 | transfer_to[GRPQUOTA] = dqget(sb, make_kqid_gid(attr->ia_gid)); | 1226 | transfer_to[GRPQUOTA] = dqget(sb, make_kqid_gid(attr->ia_gid)); |
1221 | if (!transfer_to[GRPQUOTA]) { | 1227 | if (IS_ERR(transfer_to[GRPQUOTA])) { |
1222 | status = -ESRCH; | 1228 | status = PTR_ERR(transfer_to[GRPQUOTA]); |
1223 | goto bail_unlock; | 1229 | goto bail_unlock; |
1224 | } | 1230 | } |
1225 | } | 1231 | } |