Lines Matching refs:origin
67 * A non-dir origin may be disconnected, which is fine, because
85 * Return -ENODATA for "origin unknown".
96 /* Treat larger version and unknown flags as "origin unknown" */
100 /* Treat endianness mismatch as "origin unknown" */
120 /* Zero size value means "copied up but origin unknown" */
146 pr_warn_ratelimited("failed to get origin (%i)\n", res);
149 pr_warn_ratelimited("invalid origin (%*phN)\n", res, fh);
172 * Treat stale file handle to lower file as "origin unknown".
345 struct dentry *origin = NULL;
357 origin = ovl_decode_real_fh(fh, ofs->layers[i].mnt,
359 if (origin)
363 if (!origin)
365 else if (IS_ERR(origin))
366 return PTR_ERR(origin);
369 inode_wrong_type(d_inode(upperdentry), d_inode(origin)->i_mode))
375 dput(origin);
379 .dentry = origin,
386 pr_warn_ratelimited("invalid origin (%pd2, ftype=%x, origin ftype=%x).\n",
388 d_inode(origin)->i_mode & S_IFMT);
389 dput(origin);
473 is_upper ? "upper" : "origin", real,
508 * Verify that an index entry name matches the origin file handle stored in
509 * OVL_XATTR_ORIGIN and that origin file handle can be decoded to lower path.
510 * Return 0 on match, -ESTALE on mismatch or stale origin, < 0 on error.
516 struct ovl_path origin = { };
517 struct ovl_path *stack = &origin;
545 * of the overlay inode). These entries contain no origin xattr.
560 * real inode. For non-dir index, we can read the copy up origin xattr
591 if (ovl_get_nlink(ofs, origin.dentry, index, 0) == 0)
596 dput(origin.dentry);
630 * origin inode. The index entry name is the hex representation of the lower
637 * If the index dentry for a copy up origin inode is positive, but points
643 int ovl_get_index_name(struct dentry *origin, struct qstr *name)
648 fh = ovl_encode_real_fh(origin, false);
689 struct dentry *origin, bool verify)
694 bool is_dir = d_is_dir(origin);
697 err = ovl_get_index_name(origin, &name);
710 d_inode(origin)->i_ino, name.len, name.name,
727 inode_wrong_type(inode, d_inode(origin)->i_mode)) {
729 * Index should always be of the same file type as origin
732 * unlinked, which means that finding a lower origin on lookup
735 pr_warn_ratelimited("bad index found (index=%pd2, ftype=%x, origin ftype=%x).\n",
737 d_inode(origin)->i_mode & S_IFMT);
741 pr_warn_ratelimited("suspected uncovered redirected dir found (origin=%pd2, index=%pd2).\n",
742 origin, index);
750 pr_warn_ratelimited("suspected multiply redirected dir found (upper=%pd2, origin=%pd2, index=%pd2).\n",
751 upper, origin, index);
795 /* Fix missing 'origin' xattr */
826 struct dentry *origin = NULL;
864 * Lookup copy up origin by decoding origin file handle.
866 * because we only need to hold the origin inode in
918 pr_warn_ratelimited("refusing to follow metacopy origin for (%pd2)\n", dentry);
923 * If no origin fh is stored in upper of a merge dir, store fh
936 * lower dir that does not match a stored origin xattr. In any
937 * case, only verified origin is used for index lookup.
939 * For non-dir dentry, if index=on, then ensure origin
953 origin = this;
1018 origin = origin_path->dentry;
1025 * For the case of upperdentry, we have set origin by now if it
1030 * matches origin, otherwise dir index entries may be inconsistent
1033 * For regular upper, we already set origin if upper had ORIGIN
1037 * For metacopy upper, we set a verified origin already if index
1042 origin = stack[0].dentry;
1044 if (origin && ovl_indexdir(dentry->d_sb) &&
1046 index = ovl_lookup_index(ofs, upperdentry, origin, true);