Whamcloud - gitweb
LU-11156 scrub: skip project quota inode 29/32829/7
authorAlexander Boyko <c17825@cray.com>
Wed, 18 Jul 2018 14:17:16 +0000 (10:17 -0400)
committerOleg Drokin <green@whamcloud.com>
Thu, 9 Aug 2018 18:18:31 +0000 (18:18 +0000)
Error happened when scrub try to process project quota inode.
Scrub thinks that it is IGIF, because it has no lma fid. And it starts
to create O/inum/{LAST_ID,d0-d31}, and fails with not enough credits.
The project quota inode s_prj_quota_inum should be skipped
from scrub iteration.

Signed-off-by: Alexander Boyko <c17825@cray.com>
Cray-bug-id: LUS-6197
Change-Id: I38c347377a1c648ac3dd3e3ff4c4d65ee34cde39
Reviewed-on: https://review.whamcloud.com/32829
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Wang Shilong <wshilong@whamcloud.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/osd-ldiskfs/osd_scrub.c

index 22a7277..6c47f8d 100644 (file)
@@ -733,6 +733,13 @@ static int osd_iit_iget(struct osd_thread_info *info, struct osd_device *dev,
                     is_remote_parent_ino(dev, pos)))
                RETURN(SCRUB_NEXT_CONTINUE);
 
+        /* Skip project quota inode since it is greater than s_first_ino. */
+#ifdef HAVE_PROJECT_QUOTA
+       if (ldiskfs_has_feature_project(sb) &&
+           pos == le32_to_cpu(LDISKFS_SB(sb)->s_es->s_prj_quota_inum))
+               RETURN(SCRUB_NEXT_CONTINUE);
+#endif
+
        osd_id_gen(lid, pos, OSD_OII_NOGEN);
        inode = osd_iget(info, dev, lid);
        if (IS_ERR(inode)) {