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:
parent
b955b6d3fe
commit
c59124dd20
9 changed files with 65 additions and 71 deletions
|
|
@ -81,6 +81,18 @@ static __inline void bitmap_unset(
|
|||
mask->count--;
|
||||
}
|
||||
}
|
||||
static __inline void bitmap_intersect(
|
||||
IN bitmap4 *dst,
|
||||
IN const bitmap4 *src)
|
||||
{
|
||||
uint32_t i, count = 0;
|
||||
for (i = 0; i < 3; i++) {
|
||||
dst->arr[i] &= src->arr[i];
|
||||
if (dst->arr[i])
|
||||
count = i+1;
|
||||
}
|
||||
dst->count = min(dst->count, count);
|
||||
}
|
||||
|
||||
ULONG nfs_file_info_to_attributes(
|
||||
IN const nfs41_file_info *info);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue