• Luís Henriques's avatar
    ceph: prevent a client from exceeding the MDS maximum xattr size · d93231a6
    Luís Henriques authored
    The MDS tries to enforce a limit on the total key/values in extended
    attributes.  However, this limit is enforced only if doing a synchronous
    operation (MDS_OP_SETXATTR) -- if we're buffering the xattrs, the MDS
    doesn't have a chance to enforce these limits.
    
    This patch adds support for decoding the xattrs maximum size setting that is
    distributed in the mdsmap.  Then, when setting an xattr, the kernel client
    will revert to do a synchronous operation if that maximum size is exceeded.
    
    While there, fix a dout() that would trigger a printk warning:
    
    [   98.718078] ------------[ cut here ]------------
    [   98.719012] precision 65536 too large
    [   98.719039] WARNING: CPU: 1 PID: 3755 at lib/vsprintf.c:2703 vsnprintf+0x5e3/0x600
    ...
    
    Link: https://tracker.ceph.com/issues/55725Signed-off-by: default avatarLuís Henriques <lhenriques@suse.de>
    Reviewed-by: default avatarXiubo Li <xiubli@redhat.com>
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    d93231a6
mdsmap.c 10.7 KB