Whamcloud - gitweb
LU-15873 quota: don't release for RO device 96/48096/6
authorWang Shilong <wshilong@ddn.com>
Thu, 7 Jan 2021 13:34:00 +0000 (21:34 +0800)
committerOleg Drokin <green@whamcloud.com>
Tue, 21 Mar 2023 23:13:30 +0000 (23:13 +0000)
There is no need to release quota space for readonly
device.

And further problem is there is inconsistency between
Lustre osd and ldiskfs, ldiskfs won't load quota inode
on Readonly mount, however Lustre osd is not aware of
this and load accounting objects even in RO. this might
potentially cause problems when Lustre want to access
quota.

Change-Id: I7db5fe3f3bed3103ed62f6beba1d6f47fce12a21
Signed-off-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Li Xi <lixi@ddn.com>
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/48096
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
lustre/osd-ldiskfs/osd_quota.c
lustre/quota/qsd_handler.c

index 75a26ac..d8f0fb4 100644 (file)
@@ -76,6 +76,14 @@ int osd_acct_obj_lookup(struct osd_thread_info *info, struct osd_device *osd,
        if (!ldiskfs_has_feature_quota(sb))
                RETURN(-ENOENT);
 
+       /**
+        * ldiskfs won't load quota inodes on RO mount,
+        * So disable it in osd-ldiskfs to keep same behavior
+        * like lower layer to avoid further confusions.
+        */
+       if (osd->od_dt_dev.dd_rdonly)
+               RETURN(-ENOENT);
+
        id->oii_gen = OSD_OII_NOGEN;
        switch (fid2type(fid)) {
        case USRQUOTA:
index b12d495..c6db0de 100644 (file)
@@ -1259,7 +1259,7 @@ void qsd_op_adjust(const struct lu_env *env, struct qsd_instance *qsd,
        LASSERT(qqi);
 
        if (!qsd_type_enabled(qsd, qtype) || qqi->qqi_acct_obj == NULL ||
-           qid->qid_uid == 0)
+           qid->qid_uid == 0 || qsd->qsd_dev->dd_rdonly)
                RETURN_EXIT;
 
        read_lock(&qsd->qsd_lock);