@@ -1137,6 +1137,13 @@ CURVEFS_ERROR FuseClient::FuseOpListXattr(fuse_req_t req, fuse_ino_t ino,
1137
1137
// +1 because, the format is key\0key\0
1138
1138
*realSize += it.first .length () + 1 ;
1139
1139
}
1140
+ // add summary xattr key
1141
+ if (inodeAttr.type () == FsFileType::TYPE_DIRECTORY) {
1142
+ *realSize += strlen (XATTR_DIR_RFILES) + 1 ;
1143
+ *realSize += strlen (XATTR_DIR_RSUBDIRS) + 1 ;
1144
+ *realSize += strlen (XATTR_DIR_RENTRIES) + 1 ;
1145
+ *realSize += strlen (XATTR_DIR_RFBYTES) + 1 ;
1146
+ }
1140
1147
1141
1148
if (size == 0 ) {
1142
1149
return CURVEFS_ERROR::OK;
@@ -1150,6 +1157,16 @@ CURVEFS_ERROR FuseClient::FuseOpListXattr(fuse_req_t req, fuse_ino_t ino,
1150
1157
memcpy (value, it.first .c_str (), tsize);
1151
1158
value += tsize;
1152
1159
}
1160
+ if (inodeAttr.type () == FsFileType::TYPE_DIRECTORY) {
1161
+ memcpy (value, XATTR_DIR_RFILES, strlen (XATTR_DIR_RFILES) + 1 );
1162
+ value += strlen (XATTR_DIR_RFILES) + 1 ;
1163
+ memcpy (value, XATTR_DIR_RSUBDIRS, strlen (XATTR_DIR_RSUBDIRS) + 1 );
1164
+ value += strlen (XATTR_DIR_RSUBDIRS) + 1 ;
1165
+ memcpy (value, XATTR_DIR_RENTRIES, strlen (XATTR_DIR_RENTRIES) + 1 );
1166
+ value += strlen (XATTR_DIR_RENTRIES) + 1 ;
1167
+ memcpy (value, XATTR_DIR_RFBYTES, strlen (XATTR_DIR_RFBYTES) + 1 );
1168
+ value += strlen (XATTR_DIR_RFBYTES) + 1 ;
1169
+ }
1153
1170
return CURVEFS_ERROR::OK;
1154
1171
}
1155
1172
return CURVEFS_ERROR::OUT_OF_RANGE;
0 commit comments