hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/net/ceph/striper.c
....@@ -259,3 +259,20 @@
259259 return 0;
260260 }
261261 EXPORT_SYMBOL(ceph_extent_to_file);
262
+
263
+u64 ceph_get_num_objects(struct ceph_file_layout *l, u64 size)
264
+{
265
+ u64 period = (u64)l->stripe_count * l->object_size;
266
+ u64 num_periods = DIV64_U64_ROUND_UP(size, period);
267
+ u64 remainder_bytes;
268
+ u64 remainder_objs = 0;
269
+
270
+ div64_u64_rem(size, period, &remainder_bytes);
271
+ if (remainder_bytes > 0 &&
272
+ remainder_bytes < (u64)l->stripe_count * l->stripe_unit)
273
+ remainder_objs = l->stripe_count -
274
+ DIV_ROUND_UP_ULL(remainder_bytes, l->stripe_unit);
275
+
276
+ return num_periods * l->stripe_count - remainder_objs;
277
+}
278
+EXPORT_SYMBOL(ceph_get_num_objects);