quota: Propagate error from ->acquire_dquot()
authorJan Kara <jack@suse.cz>
Wed, 24 Jun 2015 16:07:02 +0000 (18:07 +0200)
committerJan Kara <jack@suse.com>
Thu, 23 Jul 2015 18:59:10 +0000 (20:59 +0200)
Currently when some error happened in ->acquire_dquot(), dqget() just
returned NULL. That was indistinguishable from a case when e.g. someone
run quotaoff and so was generally silently ignored. However
->acquire_dquot() can fail because of ENOSPC or EIO in which case user
should better know. So propagate error up from ->acquire_dquot properly.

Signed-off-by: Jan Kara <jack@suse.cz>
fs/ocfs2/file.c
fs/ocfs2/quota_local.c
fs/quota/dquot.c
include/linux/quotaops.h

index 719f7f4..4d9e827 100644 (file)
@@ -1209,8 +1209,8 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
                    && OCFS2_HAS_RO_COMPAT_FEATURE(sb,
                    OCFS2_FEATURE_RO_COMPAT_USRQUOTA)) {
                        transfer_to[USRQUOTA] = dqget(sb, make_kqid_uid(attr->ia_uid));
-                       if (!transfer_to[USRQUOTA]) {
-                               status = -ESRCH;
+                       if (IS_ERR(transfer_to[USRQUOTA])) {
+                               status = PTR_ERR(transfer_to[USRQUOTA]);
                                goto bail_unlock;
                        }
                }
@@ -1218,8 +1218,8 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
                    && OCFS2_HAS_RO_COMPAT_FEATURE(sb,
                    OCFS2_FEATURE_RO_COMPAT_GRPQUOTA)) {
                        transfer_to[GRPQUOTA] = dqget(sb, make_kqid_gid(attr->ia_gid));
-                       if (!transfer_to[GRPQUOTA]) {
-                               status = -ESRCH;
+                       if (IS_ERR(transfer_to[GRPQUOTA])) {
+                               status = PTR_ERR(transfer_to[GRPQUOTA]);
                                goto bail_unlock;
                        }
                }
index 3d0b63d..bb07004 100644 (file)
@@ -499,8 +499,8 @@ static int ocfs2_recover_local_quota_file(struct inode *lqinode,
                        dquot = dqget(sb,
                                      make_kqid(&init_user_ns, type,
                                                le64_to_cpu(dqblk->dqb_id)));
-                       if (!dquot) {
-                               status = -EIO;
+                       if (IS_ERR(dquot)) {
+                               status = PTR_ERR(dquot);
                                mlog(ML_ERROR, "Failed to get quota structure "
                                     "for id %u, type %d. Cannot finish quota "
                                     "file recovery.\n",
Simple merge
Simple merge