On 17/12/26 10:11, piaojun wrote: > If metadata is corrupted such as 'invalid inode block', we will get > failed by calling 'mount()' as below: > > ocfs2_mount > ocfs2_initialize_super > ocfs2_init_global_system_inodes : return -EINVAL if inode is NULL > ocfs2_get_system_file_inode > _ocfs2_get_system_file_inode : return NULL if inode is errno Do you mean inode is bad?
> ocfs2_iget > ocfs2_read_locked_inode > ocfs2_validate_inode_block > > In this situation we need return -EROFS to upper application, so that > user can fix it by fsck. And then mount again. > > Signed-off-by: Jun Piao <piao...@huawei.com> > Reviewed-by: Alex Chen <alex.c...@huawei.com> > --- > fs/ocfs2/super.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c > index 040bbb6..dea21a7 100644 > --- a/fs/ocfs2/super.c > +++ b/fs/ocfs2/super.c > @@ -474,7 +474,10 @@ static int ocfs2_init_global_system_inodes(struct > ocfs2_super *osb) > new = ocfs2_get_system_file_inode(osb, i, osb->slot_num); > if (!new) { > ocfs2_release_system_inodes(osb); > - status = -EINVAL; > + if (ocfs2_is_soft_readonly(osb)) I'm afraid that having bad inode doesn't means ocfs2 is readonly. And the calling application is mount.ocfs2. So do you mean mount.ocfs2 have to handle EROFS like printing corresponding error log? > + status = -EROFS; > + else > + status = -EINVAL; > mlog_errno(status); > /* FIXME: Should ERROR_RO_FS */ > mlog(ML_ERROR, "Unable to load system inode %d, " > @@ -505,7 +508,10 @@ static int ocfs2_init_local_system_inodes(struct > ocfs2_super *osb) > new = ocfs2_get_system_file_inode(osb, i, osb->slot_num); > if (!new) { > ocfs2_release_system_inodes(osb); > - status = -EINVAL; > + if (ocfs2_is_soft_readonly(osb)) > + status = -EROFS; > + else > + status = -EINVAL; > mlog(ML_ERROR, "status=%d, sysfile=%d, slot=%d\n", > status, i, osb->slot_num); > goto bail; > _______________________________________________ Ocfs2-devel mailing list Ocfs2-devel@oss.oracle.com https://oss.oracle.com/mailman/listinfo/ocfs2-devel