@@ -2583,6 +2583,12 @@ static int get_parent_attributes(struct svc_export *exp, struct kstat *stat)
} else
WRITE32(0); /* length */
}
+
+ if (bmval2 & FATTR4_WORD2_LAYOUT_BLKSIZE) {
+ if ((buflen -= 4) < 0)
+ goto out_resource;
+ WRITE32(stat.blksize);
+ }
#endif /* CONFIG_PNFSD */
if (bmval2 & FATTR4_WORD2_SECURITY_LABEL) {
status = nfsd4_encode_security_label(rqstp, context,
@@ -329,8 +329,14 @@ static inline void nfs4_reset_lease(time_t leasetime) { }
NFSD4_SUPPORTED_ATTRS_WORD1
#endif /* CONFIG_PNFSD */
+#if defined(CONFIG_PNFSD)
+#define NFSD4_1_SUPPORTED_ATTRS_WORD2 \
+ (NFSD4_SUPPORTED_ATTRS_WORD2 | FATTR4_WORD2_SUPPATTR_EXCLCREAT | \
+ FATTR4_WORD2_LAYOUT_BLKSIZE)
+#else /* CONFIG_PNFSD */
#define NFSD4_1_SUPPORTED_ATTRS_WORD2 \
(NFSD4_SUPPORTED_ATTRS_WORD2 | FATTR4_WORD2_SUPPATTR_EXCLCREAT)
+#endif /* CONFIG_PNFSD */
#ifdef CONFIG_NFSD_V4_SECURITY_LABEL
#define NFSD4_2_SUPPORTED_ATTRS_WORD2 \