Lines Matching refs:ofs
33 struct ovl_fs *ofs = OVL_FS(d->sb); in ovl_check_redirect() local
35 buf = ovl_get_redirect_xattr(ofs, dentry, prelen + strlen(post)); in ovl_check_redirect()
108 static struct ovl_fh *ovl_get_fh(struct ovl_fs *ofs, struct dentry *dentry, in ovl_get_fh() argument
114 res = ovl_do_getxattr(ofs, dentry, ox, NULL, 0); in ovl_get_fh()
128 res = ovl_do_getxattr(ofs, dentry, ox, fh->buf, res); in ovl_get_fh()
153 struct dentry *ovl_decode_real_fh(struct ovl_fs *ofs, struct ovl_fh *fh, in ovl_decode_real_fh() argument
167 if (ofs->config.uuid ? !uuid_equal(&fh->fb.uuid, &mnt->mnt_sb->s_uuid) : in ovl_decode_real_fh()
347 int ovl_check_origin_fh(struct ovl_fs *ofs, struct ovl_fh *fh, bool connected, in ovl_check_origin_fh() argument
353 for (i = 1; i < ofs->numlayer; i++) { in ovl_check_origin_fh()
358 if (ofs->layers[i].fsid && in ovl_check_origin_fh()
359 ofs->layers[i].fs->bad_uuid) in ovl_check_origin_fh()
362 origin = ovl_decode_real_fh(ofs, fh, ofs->layers[i].mnt, in ovl_check_origin_fh()
385 .layer = &ofs->layers[i] in ovl_check_origin_fh()
398 static int ovl_check_origin(struct ovl_fs *ofs, struct dentry *upperdentry, in ovl_check_origin() argument
401 struct ovl_fh *fh = ovl_get_fh(ofs, upperdentry, OVL_XATTR_ORIGIN); in ovl_check_origin()
407 err = ovl_check_origin_fh(ofs, fh, false, upperdentry, stackp); in ovl_check_origin()
423 static int ovl_verify_fh(struct ovl_fs *ofs, struct dentry *dentry, in ovl_verify_fh() argument
426 struct ovl_fh *ofh = ovl_get_fh(ofs, dentry, ox); in ovl_verify_fh()
450 int ovl_verify_set_fh(struct ovl_fs *ofs, struct dentry *dentry, in ovl_verify_set_fh() argument
458 fh = ovl_encode_real_fh(ofs, real, is_upper); in ovl_verify_set_fh()
465 err = ovl_verify_fh(ofs, dentry, ox, fh); in ovl_verify_set_fh()
467 err = ovl_do_setxattr(ofs, dentry, ox, fh->buf, fh->fb.len); in ovl_verify_set_fh()
484 struct dentry *ovl_index_upper(struct ovl_fs *ofs, struct dentry *index) in ovl_index_upper() argument
492 fh = ovl_get_fh(ofs, index, OVL_XATTR_UPPER); in ovl_index_upper()
496 upper = ovl_decode_real_fh(ofs, fh, ovl_upper_mnt(ofs), true); in ovl_index_upper()
517 int ovl_verify_index(struct ovl_fs *ofs, struct dentry *index) in ovl_verify_index() argument
559 if (d_is_dir(index) && !ofs->config.nfs_export) in ovl_verify_index()
569 upper = ovl_index_upper(ofs, index); in ovl_verify_index()
585 err = ovl_verify_fh(ofs, upper, OVL_XATTR_ORIGIN, fh); in ovl_verify_index()
592 err = ovl_check_origin_fh(ofs, fh, false, index, &stack); in ovl_verify_index()
596 if (ovl_get_nlink(ofs, origin.dentry, index, 0) == 0) in ovl_verify_index()
648 int ovl_get_index_name(struct ovl_fs *ofs, struct dentry *origin, in ovl_get_index_name() argument
654 fh = ovl_encode_real_fh(ofs, origin, false); in ovl_get_index_name()
665 struct dentry *ovl_get_index_fh(struct ovl_fs *ofs, struct ovl_fh *fh) in ovl_get_index_fh() argument
675 index = lookup_positive_unlocked(name.name, ofs->indexdir, name.len); in ovl_get_index_fh()
694 struct dentry *ovl_lookup_index(struct ovl_fs *ofs, struct dentry *upper, in ovl_lookup_index() argument
703 err = ovl_get_index_name(ofs, origin, &name); in ovl_lookup_index()
707 index = lookup_positive_unlocked(name.name, ofs->indexdir, name.len); in ovl_lookup_index()
753 err = ovl_verify_upper(ofs, index, upper, false); in ovl_lookup_index()
802 static int ovl_fix_origin(struct ovl_fs *ofs, struct dentry *dentry, in ovl_fix_origin() argument
807 if (ovl_check_origin_xattr(ofs, upper)) in ovl_fix_origin()
814 err = ovl_set_origin(ofs, lower, upper); in ovl_fix_origin()
827 struct ovl_fs *ofs = dentry->d_sb->s_fs_info; in ovl_lookup() local
848 .last = ofs->config.redirect_follow ? false : !poe->numlower, in ovl_lookup()
853 if (dentry->d_name.len > ofs->namelen) in ovl_lookup()
879 err = ovl_check_origin(ofs, upperdentry, &origin_path); in ovl_lookup()
900 stack = kcalloc(ofs->numlayer - 1, sizeof(struct ovl_path), in ovl_lookup()
909 if (!ofs->config.redirect_follow) in ovl_lookup()
921 if ((uppermetacopy || d.metacopy) && !ofs->config.metacopy) { in ovl_lookup()
932 if (upperdentry && !ctr && !ofs->noxattr && d.is_dir) { in ovl_lookup()
933 err = ovl_fix_origin(ofs, dentry, this, upperdentry); in ovl_lookup()
951 (!d.is_dir && ofs->config.index && origin_path))) { in ovl_lookup()
952 err = ovl_verify_origin(ofs, upperdentry, this, false); in ovl_lookup()
988 if (d.redirect && !ofs->config.redirect_follow) { in ovl_lookup()
1052 index = ovl_lookup_index(ofs, upperdentry, origin, true); in ovl_lookup()
1075 upperredirect = ovl_get_redirect_xattr(ofs, upperdentry, 0); in ovl_lookup()
1081 err = ovl_check_metacopy_xattr(ofs, upperdentry); in ovl_lookup()