setting SUPPORTS_HARD_LINKS if link_support is enabled

This commit is contained in:
unknown 2010-11-04 11:51:26 -04:00
parent 8688d75574
commit 7eae229661
3 changed files with 9 additions and 1 deletions

View file

@ -191,6 +191,7 @@ typedef struct __nfs41_file_info {
bool_t case_preserving; bool_t case_preserving;
bool_t symlink_dir; bool_t symlink_dir;
bool_t symlink_support; bool_t symlink_support;
bool_t link_support;
} nfs41_file_info; } nfs41_file_info;
#endif /* !__NFS41_DAEMON_TYPES_H__ */ #endif /* !__NFS41_DAEMON_TYPES_H__ */

View file

@ -1552,6 +1552,10 @@ static bool_t decode_file_attrs(
if (!xdr_u_hyper(xdr, &info->size)) if (!xdr_u_hyper(xdr, &info->size))
return FALSE; return FALSE;
} }
if (attrs->attrmask.arr[0] & FATTR4_WORD0_LINK_SUPPORT) {
if (!xdr_bool(xdr, &info->link_support))
return FALSE;
}
if (attrs->attrmask.arr[0] & FATTR4_WORD0_SYMLINK_SUPPORT) { if (attrs->attrmask.arr[0] & FATTR4_WORD0_SYMLINK_SUPPORT) {
if (!xdr_bool(xdr, &info->symlink_support)) if (!xdr_bool(xdr, &info->symlink_support))
return FALSE; return FALSE;

View file

@ -96,7 +96,8 @@ static int handle_volume_attributes(
/* query the case_ attributes of the root filesystem */ /* query the case_ attributes of the root filesystem */
nfs41_file_info info = { 0 }; nfs41_file_info info = { 0 };
bitmap4 attr_request = { 1, { FATTR4_WORD0_CASE_INSENSITIVE | bitmap4 attr_request = { 1, { FATTR4_WORD0_CASE_INSENSITIVE |
FATTR4_WORD0_CASE_PRESERVING | FATTR4_WORD0_SYMLINK_SUPPORT} }; FATTR4_WORD0_CASE_PRESERVING | FATTR4_WORD0_SYMLINK_SUPPORT |
FATTR4_WORD0_LINK_SUPPORT } };
PFILE_FS_ATTRIBUTE_INFORMATION attr = &args->info.attribute; PFILE_FS_ATTRIBUTE_INFORMATION attr = &args->info.attribute;
int status = NO_ERROR; int status = NO_ERROR;
@ -109,6 +110,8 @@ static int handle_volume_attributes(
} }
attr->FileSystemAttributes = FILE_SUPPORTS_REMOTE_STORAGE; attr->FileSystemAttributes = FILE_SUPPORTS_REMOTE_STORAGE;
if (info.link_support)
attr->FileSystemAttributes |= FILE_SUPPORTS_HARD_LINKS;
if (info.symlink_support) if (info.symlink_support)
attr->FileSystemAttributes |= FILE_SUPPORTS_REPARSE_POINTS; attr->FileSystemAttributes |= FILE_SUPPORTS_REPARSE_POINTS;
if (info.case_preserving) if (info.case_preserving)