diff --git a/kmod/src/count.h b/kmod/src/count.h index 97d56ef5..b2dd8152 100644 --- a/kmod/src/count.h +++ b/kmod/src/count.h @@ -225,7 +225,7 @@ static inline const struct scoutfs_item_count SIC_XATTR_SET(unsigned old_parts, cnt.items++; if (creating) { - new_parts = SCOUTFS_XATTR_NR_PARTS(name_len, size) + new_parts = SCOUTFS_XATTR_NR_PARTS(name_len, size); cnt.items += new_parts; cnt.vals += sizeof(struct scoutfs_xattr) + name_len + size; diff --git a/kmod/src/format.h b/kmod/src/format.h index 9b9fd06d..d801c40d 100644 --- a/kmod/src/format.h +++ b/kmod/src/format.h @@ -611,11 +611,11 @@ enum { #define SCOUTFS_XATTR_MAX_NAME_LEN 255 #define SCOUTFS_XATTR_MAX_VAL_LEN 65535 -#define SCOUTFS_XATTR_MAX_PART_SIZE 512U +#define SCOUTFS_XATTR_MAX_PART_SIZE SCOUTFS_MAX_VAL_SIZE #define SCOUTFS_XATTR_NR_PARTS(name_len, val_len) \ DIV_ROUND_UP(sizeof(struct scoutfs_xattr) + name_len + val_len, \ - SCOUTFS_XATTR_MAX_PART_SIZE); + (unsigned int)SCOUTFS_XATTR_MAX_PART_SIZE) #define SCOUTFS_LOCK_INODE_GROUP_NR 1024 #define SCOUTFS_LOCK_INODE_GROUP_MASK (SCOUTFS_LOCK_INODE_GROUP_NR - 1) diff --git a/kmod/src/xattr.c b/kmod/src/xattr.c index da109367..4dbe9900 100644 --- a/kmod/src/xattr.c +++ b/kmod/src/xattr.c @@ -270,8 +270,8 @@ static int create_xattr_items(struct inode *inode, u64 id, struct super_block *sb = inode->i_sb; struct scoutfs_key key; unsigned int part_bytes; + unsigned int total; struct kvec val; - int total; int ret; init_xattr_key(&key, scoutfs_ino(inode), @@ -280,7 +280,8 @@ static int create_xattr_items(struct inode *inode, u64 id, total = 0; ret = 0; while (total < bytes) { - part_bytes = min(bytes - total, SCOUTFS_XATTR_MAX_PART_SIZE); + part_bytes = min_t(unsigned int, bytes - total, + SCOUTFS_XATTR_MAX_PART_SIZE); kvec_init(&val, (void *)xat + total, part_bytes); ret = scoutfs_forest_create(sb, &key, &val, lock);