From: Bobi Jam Date: Fri, 29 Jul 2022 04:12:12 +0000 (+0800) Subject: LU-15873 osd: heed readonly mount upon osd-ldiskfs device X-Git-Tag: 2.15.55~72 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=c28887efaa499b902d8f017afb496fe0964ab751;p=fs%2Flustre-release.git LU-15873 osd: heed readonly mount upon osd-ldiskfs device Mount device rdonly for scrub if instructed. Avoid write FID EA upon rdonly osd device. Signed-off-by: Bobi Jam Change-Id: I9d24bdebfa2c6a98dc583760413e957ebcf4bca7 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/48098 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin Reviewed-by: Arshad Hussain Reviewed-by: Andreas Dilger --- diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index a8d3d49..79934ef 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -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) diff --git a/lustre/osd-ldiskfs/osd_scrub.c b/lustre/osd-ldiskfs/osd_scrub.c index 8c400ed..0b7a885 100644 --- a/lustre/osd-ldiskfs/osd_scrub.c +++ b/lustre/osd-ldiskfs/osd_scrub.c @@ -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));