+ /* default value for volume f_attributes */
+ if (VFSATTR_IS_ACTIVE(&vs, f_attributes)
+ && !VFSATTR_IS_SUPPORTED(&vs, f_attributes)) {
+ vol_attributes_attr_t *attrp = &vs.f_attributes;
+
+ attrp->validattr.commonattr = VFS_DFLT_ATTR_CMN;
+ attrp->validattr.volattr = VFS_DFLT_ATTR_VOL;
+ attrp->validattr.dirattr = VFS_DFLT_ATTR_DIR;
+ attrp->validattr.fileattr = VFS_DFLT_ATTR_FILE;
+ attrp->validattr.forkattr = 0;
+
+ attrp->nativeattr.commonattr = 0;
+ attrp->nativeattr.volattr = 0;
+ attrp->nativeattr.dirattr = 0;
+ attrp->nativeattr.fileattr = 0;
+ attrp->nativeattr.forkattr = 0;
+ VFSATTR_SET_SUPPORTED(&vs, f_attributes);
+ }
+
+ /* default value for volume f_capabilities */
+ if (VFSATTR_IS_ACTIVE(&vs, f_capabilities)) {
+ /* getattrlist is always supported now. */
+ if (!VFSATTR_IS_SUPPORTED(&vs, f_capabilities)) {
+ vs.f_capabilities.capabilities[VOL_CAPABILITIES_FORMAT] = 0;
+ vs.f_capabilities.capabilities[VOL_CAPABILITIES_INTERFACES] = VOL_CAP_INT_ATTRLIST;
+ vs.f_capabilities.capabilities[VOL_CAPABILITIES_RESERVED1] = 0;
+ vs.f_capabilities.capabilities[VOL_CAPABILITIES_RESERVED2] = 0;
+
+ vs.f_capabilities.valid[VOL_CAPABILITIES_FORMAT] = 0;
+ vs.f_capabilities.valid[VOL_CAPABILITIES_INTERFACES] = VOL_CAP_INT_ATTRLIST;
+ vs.f_capabilities.valid[VOL_CAPABILITIES_RESERVED1] = 0;
+ vs.f_capabilities.valid[VOL_CAPABILITIES_RESERVED2] = 0;
+ VFSATTR_SET_SUPPORTED(&vs, f_capabilities);
+ }
+ else {
+ /* OR in VOL_CAP_INT_ATTRLIST if f_capabilities is supported */
+ vs.f_capabilities.capabilities[VOL_CAPABILITIES_INTERFACES] |= VOL_CAP_INT_ATTRLIST;
+ vs.f_capabilities.valid[VOL_CAPABILITIES_INTERFACES] |= VOL_CAP_INT_ATTRLIST;
+ }
+ }
+