superblock: mask getattr requests with supported_attrs

on creation of a new superblock, construct a bitmap for the default attribute mask to be used for GETATTR and READDIR requests on that filesystem.  mask out any unsupported attributes, and store the bitmap in the field nfs41_superblock.default_getattr

replaced function init_getattr_request() with nfs41_superblock_getattr_mask(), which returns a copy of superblock->default_getattr

removed the locking in nfs41_superblock_supported_attrs() and nfs41_superblock_supported_attrs_exclcreat(), as the supported_attrs and suppattr_exclcreat fields are read-only after the superblock is first initialized.  also factored out their common code into a bitmap_intersect() function in util.h

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
Casey Bodley 2012-04-02 14:22:58 -04:00 committed by unknown
parent b955b6d3fe
commit c59124dd20
9 changed files with 65 additions and 71 deletions

View file

@ -232,7 +232,7 @@ retry_write:
} else if (stable == UNSTABLE4) {
nfs41_file_info info;
bitmap4 attr_request;
init_getattr_request(&attr_request);
nfs41_superblock_getattr_mask(file->fh.superblock, &attr_request);
status = nfs41_getattr(session, file, &attr_request, &info);
if (status)
goto out;