From: dparmar18 Date: Tue, 13 Dec 2022 11:40:34 +0000 (+0530) Subject: mds: accept human readable values for quotas X-Git-Tag: v18.2.4~417^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=519bdea10fcc798520e8ea6df49e0a7490e6eab5;p=ceph.git mds: accept human readable values for quotas Quotas are set in bytes for cephfs subvolumes. This could be simpler if done in a human readable size like K/Ki, M/Mi, G/Gi or T/Ti Fixes: https://tracker.ceph.com/issues/55940 Signed-off-by: dparmar18 (cherry picked from commit 2d43fede1e1322523ec0029960d9ebf70a8f8e84) --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index bf12cb7e2c8f..25bf3afd2d80 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -5865,9 +5865,13 @@ int Server::parse_quota_vxattr(string name, string value, quota_info_t *quota) return r; } } else if (name == "quota.max_bytes") { - int64_t q = boost::lexical_cast(value); - if (q < 0) + string cast_err; + int64_t q = strict_iec_cast(value, &cast_err); + if(!cast_err.empty()) { + dout(10) << __func__ << ": failed to parse quota.max_bytes: " + << cast_err << dendl; return -CEPHFS_EINVAL; + } quota->max_bytes = q; } else if (name == "quota.max_files") { int64_t q = boost::lexical_cast(value);