Lines Matching refs:dir
69 prof_getattr(struct sdev_node *dir, char *name, struct vnode *gdv, in prof_getattr() argument
75 advp = dir->sdev_attrvp; in prof_getattr()
86 "shadow directory %s/%s\n", dir->sdev_path, name)); in prof_getattr()
144 prof_mknode(struct sdev_node *dir, char *name, struct sdev_node **newdv, in prof_mknode() argument
150 ASSERT(RW_WRITE_HELD(&dir->sdev_contents)); in prof_mknode()
153 if (dv = sdev_cache_lookup(dir, name)) { in prof_mknode()
159 rv = sdev_nodeinit(dir, name, &dv, NULL); in prof_mknode()
165 sdev_cache_update(dir, &dv, name, SDEV_CACHE_ADD); in prof_mknode()
176 apply_glob_pattern(dir, *newdv); in prof_mknode()
178 sdev_cache_update(dir, &dv, name, SDEV_CACHE_DELETE); in prof_mknode()
193 struct sdev_node *dir = *dirp; in prof_make_dir() local
201 rw_enter(&dir->sdev_contents, RW_READER); in prof_make_dir()
202 if (newdv = sdev_cache_lookup(dir, name)) { in prof_make_dir()
205 rw_exit(&dir->sdev_contents); in prof_make_dir()
206 SDEV_RELE(dir); in prof_make_dir()
209 rw_exit(&dir->sdev_contents); in prof_make_dir()
223 prof_getattr(dir, name, gnewdir, &vattr, &avp, NULL); in prof_make_dir()
226 rw_enter(&dir->sdev_contents, RW_WRITER); in prof_make_dir()
227 error = prof_mknode(dir, name, &newdv, &vattr, avp, (void *)*gdirp, in prof_make_dir()
229 rw_exit(&dir->sdev_contents); in prof_make_dir()
234 SDEV_RELE(dir); in prof_make_dir()
246 prof_lookup_globaldev(struct sdev_node *dir, struct sdev_node *gdir, in prof_lookup_globaldev() argument
256 newdv = sdev_cache_lookup(dir, rename); in prof_lookup_globaldev()
284 prof_getattr(dir, rename, gdv, &vattr, &avp, NULL); in prof_lookup_globaldev()
292 if (prof_mknode(dir, rename, &newdv, &vattr, avp, in prof_lookup_globaldev()
300 prof_make_sym(struct sdev_node *dir, char *lnm, char *tgt) in prof_make_sym() argument
304 if (prof_mknode(dir, lnm, &newdv, &sdev_vattr_lnk, NULL, in prof_make_sym()
315 prof_make_symlinks(struct sdev_node *dir) in prof_make_symlinks() argument
319 nvlist_t *nvl = dir->sdev_prof.dev_symlink; in prof_make_symlinks()
322 ASSERT(RW_WRITE_HELD(&dir->sdev_contents)); in prof_make_symlinks()
335 prof_make_sym(dir, lnm, tgt); in prof_make_symlinks()
340 prof_make_maps(struct sdev_node *dir) in prof_make_maps() argument
343 nvlist_t *nvl = dir->sdev_prof.dev_map; in prof_make_maps()
346 ASSERT(RW_WRITE_HELD(&dir->sdev_contents)); in prof_make_maps()
361 (void) prof_lookup_globaldev(dir, sdev_origins->sdev_root, in prof_make_maps()
384 is_nonempty_dir(char *name, char *pathleft, struct sdev_node *dir) in is_nonempty_dir() argument
389 struct sdev_node *gdir = dir->sdev_origin; in is_nonempty_dir()
420 prof_name_matched(char *name, struct sdev_node *dir) in prof_name_matched() argument
429 nvl = dir->sdev_prof.dev_name; in prof_name_matched()
452 nvl = dir->sdev_prof.dev_glob_incdir; in prof_name_matched()
464 if (is_nonempty_dir(name, pathleft, dir)) { in prof_name_matched()
537 prof_zone_matched(char *name, struct sdev_node *dir) in prof_zone_matched() argument
539 vnode_t *gvn = SDEVTOV(dir->sdev_origin); in prof_zone_matched()
546 ASSERT((dir->sdev_flags & SDEV_ZONED) != 0); in prof_zone_matched()
549 (void *)dir, name)); in prof_zone_matched()
621 prof_make_names(struct sdev_node *dir) in prof_make_names() argument
625 nvlist_t *nvl = dir->sdev_prof.dev_name; in prof_make_names()
628 ASSERT(RW_WRITE_HELD(&dir->sdev_contents)); in prof_make_names()
630 if ((dir->sdev_flags & SDEV_ZONED) != 0) in prof_make_names()
631 prof_make_names_walk(dir, prof_make_name_zone); in prof_make_names()
636 if (dir->sdev_prof.has_glob) { in prof_make_names()
637 prof_make_names_walk(dir, prof_make_name_glob); in prof_make_names()
653 (void) prof_lookup_globaldev(dir, dir->sdev_origin, in prof_make_names()
746 apply_dir_pattern(struct sdev_node *dir, char *expr, char *pathleft, int type) in apply_dir_pattern() argument
754 (void) sdev_cleandir(dir, expr, SDEV_ENFORCE); in apply_dir_pattern()
759 rw_enter(&dir->sdev_contents, RW_WRITER); in apply_dir_pattern()
761 for (dv = SDEV_FIRST_ENTRY(dir); dv; dv = SDEV_NEXT_ENTRY(dir, dv)) { in apply_dir_pattern()
768 rw_exit(&dir->sdev_contents); in apply_dir_pattern()
777 prof_add_rule(char *name, char *tgt, struct sdev_node *dir, int type) in prof_add_rule() argument
783 ASSERT(SDEVTOV(dir)->v_type == VDIR); in prof_add_rule()
785 rw_enter(&dir->sdev_contents, RW_WRITER); in prof_add_rule()
790 nvlp = &(dir->sdev_prof.dev_glob_incdir); in prof_add_rule()
792 nvlp = &(dir->sdev_prof.dev_name); in prof_add_rule()
796 nvlp = &(dir->sdev_prof.dev_glob_excdir); in prof_add_rule()
798 nvlp = &(dir->sdev_prof.dev_name); in prof_add_rule()
801 nvlp = &(dir->sdev_prof.dev_map); in prof_add_rule()
804 nvlp = &(dir->sdev_prof.dev_symlink); in prof_add_rule()
821 dir->sdev_flags |= SDEV_BUILD; in prof_add_rule()
825 dir->sdev_prof.has_glob = 1; in prof_add_rule()
828 rw_exit(&dir->sdev_contents); in prof_add_rule()
834 apply_dir_pattern(dir, name, tgt, type); in prof_add_rule()
844 process_rule(struct sdev_node *dir, struct sdev_node *gdir, in process_rule() argument
861 SDEV_HOLD(dir); in process_rule()
872 if ((rv = prof_make_dir(name, &gdir, &dir)) != 0) { in process_rule()
883 prof_add_rule(name, tgt, dir, type); in process_rule()
884 SDEV_SIMPLE_RELE(dir); in process_rule()
938 struct sdev_node *dir, *gdir; in sdev_process_profile() local
944 dir = sdev_data->sdev_root; /* root of current instance */ in sdev_process_profile()
961 process_rule(dir, gdir, dname, NULL, in sdev_process_profile()
970 process_rule(dir, gdir, dname, NULL, in sdev_process_profile()
980 process_rule(dir, gdir, pair[0], pair[1], in sdev_process_profile()
989 process_rule(dir, gdir, pair[1], pair[0], in sdev_process_profile()