/* ARGSUSED */ static int ctfs_tdir_getattr( vnode_t *vp, vattr_t *vap, int flags, cred_t *cr, caller_context_t *ct) { vap->va_type = VDIR; vap->va_mode = 0555; vap->va_nlink = 2 + CTFS_NSPECIALS; vap->va_size = vap->va_nlink + contract_type_count(ct_types[gfs_file_index(vp)]); vap->va_ctime.tv_sec = vp->v_vfsp->vfs_mtime; vap->va_ctime.tv_nsec = 0; contract_type_time(ct_types[gfs_file_index(vp)], &vap->va_atime); vap->va_mtime = vap->va_atime; ctfs_common_getattr(vp, vap); return (0); }
/* * ctfs_statvfs - the VFS_STATVFS entry point */ static int ctfs_statvfs(vfs_t *vfsp, statvfs64_t *sp) { dev32_t d32; int total, i; bzero(sp, sizeof (*sp)); sp->f_bsize = DEV_BSIZE; sp->f_frsize = DEV_BSIZE; for (i = 0, total = 0; i < ct_ntypes; i++) total += contract_type_count(ct_types[i]); sp->f_files = total; sp->f_favail = sp->f_ffree = INT_MAX - total; (void) cmpldev(&d32, vfsp->vfs_dev); sp->f_fsid = d32; (void) strlcpy(sp->f_basetype, vfssw[vfsp->vfs_fstype].vsw_name, sizeof (sp->f_basetype)); sp->f_flag = vf_to_stf(vfsp->vfs_flag); sp->f_namemax = CTFS_NAME_MAX; (void) strlcpy(sp->f_fstr, "contract", sizeof (sp->f_fstr)); return (0); }