deleg: fix for attributes in CB_GETATTR

CB_GETATTR specifies the delegation by filehandle, but deleg_fh_cmp() was comparing superblock and fileid.  renamed deleg_fh_cmp() to deleg_file_cmp(), and created new deleg_fh_cmp() to compare actual filehandles

call to nfs41_attr_cache_lookup() was not setting flags in info.attrmask, so the change and size attributes were not being encoded in the CB_GETATTR response

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
Casey Bodley 2012-02-21 18:01:32 -08:00 committed by unknown
parent 103124377a
commit a085a8979b
2 changed files with 20 additions and 5 deletions

View file

@ -337,6 +337,13 @@ static void copy_attrs(
dst->numlinks = src->numlinks;
dst->mode = src->mode;
dst->fileid = src->fileid;
dst->attrmask.count = 2;
dst->attrmask.arr[0] = FATTR4_WORD0_TYPE | FATTR4_WORD0_CHANGE
| FATTR4_WORD0_SIZE | FATTR4_WORD0_FILEID;
dst->attrmask.arr[1] = FATTR4_WORD1_MODE
| FATTR4_WORD1_NUMLINKS | FATTR4_WORD1_TIME_ACCESS
| FATTR4_WORD1_TIME_CREATE | FATTR4_WORD1_TIME_MODIFY;
}