In vfs_open2-> vfs_open2_by_handle for some cases like UNCHECKED create we
want to set attrs_out->valid_mask to ATTR_RDATTR_ERR, so that caller should
not rely on populated attrs_out and do getattrs to get valid attrs.
} else if (attrs_out && attrs_out->request_mask & ATTR_RDATTR_ERR)
{
attrs_out->valid_mask &= ATTR_RDATTR_ERR;
}
Doing "&=" is not setting ATTR_RDATTR_ERR as valid_mask is set to 0 by
caller. So caller will always rely on attrs_out.
We should do "=" here.
} else if (attrs_out && attrs_out->request_mask & ATTR_RDATTR_ERR)
{
attrs_out->valid_mask = ATTR_RDATTR_ERR;
}
This could happen if there is create with createmode < FSAL_EXCLUSIVE and
file is already created with mdcache populated handle. We could end
corrupting mdcache attrs in such case.
Regards,
Gaurav