Whamcloud - gitweb
LU-15873 osd: heed readonly mount upon osd-ldiskfs device 98/48098/6
authorBobi Jam <bobijam@whamcloud.com>
Fri, 29 Jul 2022 04:12:12 +0000 (12:12 +0800)
committerOleg Drokin <green@whamcloud.com>
Tue, 21 Mar 2023 23:13:41 +0000 (23:13 +0000)
Mount device rdonly for scrub if instructed.

Avoid write FID EA upon rdonly osd device.

Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Change-Id: I9d24bdebfa2c6a98dc583760413e957ebcf4bca7
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/48098
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/osd-ldiskfs/osd_handler.c
lustre/osd-ldiskfs/osd_scrub.c

index a8d3d49..79934ef 100644 (file)
@@ -8249,10 +8249,13 @@ static int osd_mount(const struct lu_env *env,
 #endif
        inode = osd_sb(o)->s_root->d_inode;
        lu_local_obj_fid(fid, OSD_FS_ROOT_OID);
-       rc = osd_ea_fid_set(info, inode, fid, LMAC_NOT_IN_OI, 0);
-       if (rc != 0) {
-               CERROR("%s: failed to set lma on %s root inode\n", name, dev);
-               GOTO(out_mnt, rc);
+       if (!o->od_dt_dev.dd_rdonly) {
+               rc = osd_ea_fid_set(info, inode, fid, LMAC_NOT_IN_OI, 0);
+               if (rc != 0) {
+                       CERROR("%s: failed to set lma on %s root inode\n",
+                              name, dev);
+                       GOTO(out_mnt, rc);
+               }
        }
 
        if (lmd_flags & LMD_FLG_NOSCRUB)
index 8c400ed..0b7a885 100644 (file)
@@ -2622,8 +2622,10 @@ int osd_scrub_setup(const struct lu_env *env, struct osd_device *dev,
        scrub->os_auto_scrub_interval = interval;
 
        push_ctxt(&saved, ctxt);
-       filp = filp_open(osd_scrub_name, O_RDWR |
-                        (dev->od_dt_dev.dd_rdonly ? 0 : O_CREAT), 0644);
+       filp = filp_open(osd_scrub_name,
+                        (dev->od_dt_dev.dd_rdonly ? O_RDONLY :
+                                                    O_RDWR | O_CREAT),
+                        0644);
        if (IS_ERR(filp)) {
                pop_ctxt(&saved, ctxt);
                RETURN(PTR_ERR(filp));