772 }
773
774 /*ARGSUSED1*/
775 static void
776 snode_destructor(void *buf, void *cdrarg)
777 {
778 struct snode *sp = buf;
779 struct vnode *vp = STOV(sp);
780
781 mutex_destroy(&sp->s_lock);
782 cv_destroy(&sp->s_cv);
783
784 vn_free(vp);
785 }
786
787
788 int
789 specinit(int fstype, char *name)
790 {
791 static const fs_operation_def_t spec_vfsops_template[] = {
792 VFSNAME_SYNC, { .vfs_sync = spec_sync },
793 NULL, NULL
794 };
795 extern struct vnodeops *spec_vnodeops;
796 extern const fs_operation_def_t spec_vnodeops_template[];
797 struct vfsops *spec_vfsops;
798 int error;
799 dev_t dev;
800
801 /*
802 * Associate vfs and vnode operations.
803 */
804 error = vfs_setfsops(fstype, spec_vfsops_template, &spec_vfsops);
805 if (error != 0) {
806 cmn_err(CE_WARN, "specinit: bad vfs ops template");
807 return (error);
808 }
809
810 error = vn_make_ops(name, spec_vnodeops_template, &spec_vnodeops);
811 if (error != 0) {
812 (void) vfs_freevfsops_by_type(fstype);
813 cmn_err(CE_WARN, "specinit: bad vnode ops template");
|
772 }
773
774 /*ARGSUSED1*/
775 static void
776 snode_destructor(void *buf, void *cdrarg)
777 {
778 struct snode *sp = buf;
779 struct vnode *vp = STOV(sp);
780
781 mutex_destroy(&sp->s_lock);
782 cv_destroy(&sp->s_cv);
783
784 vn_free(vp);
785 }
786
787
788 int
789 specinit(int fstype, char *name)
790 {
791 static const fs_operation_def_t spec_vfsops_template[] = {
792 { VFSNAME_SYNC, { .vfs_sync = spec_sync } },
793 { NULL, {NULL } }
794 };
795 extern struct vnodeops *spec_vnodeops;
796 extern const fs_operation_def_t spec_vnodeops_template[];
797 struct vfsops *spec_vfsops;
798 int error;
799 dev_t dev;
800
801 /*
802 * Associate vfs and vnode operations.
803 */
804 error = vfs_setfsops(fstype, spec_vfsops_template, &spec_vfsops);
805 if (error != 0) {
806 cmn_err(CE_WARN, "specinit: bad vfs ops template");
807 return (error);
808 }
809
810 error = vn_make_ops(name, spec_vnodeops_template, &spec_vnodeops);
811 if (error != 0) {
812 (void) vfs_freevfsops_by_type(fstype);
813 cmn_err(CE_WARN, "specinit: bad vnode ops template");
|