Skip to content

Commit 020e527

Browse files
asjkdave
authored andcommitted
btrfs: sysfs: convert scnprintf and snprintf to sysfs_emit
Commit 2efc459 ("sysfs: Add sysfs_emit and sysfs_emit_at to format sysfs out") merged in 5.10 introduced two new functions sysfs_emit() and sysfs_emit_at() which are aware of the PAGE_SIZE limit of the output buffer. Use the above two new functions instead of scnprintf() and snprintf() in various sysfs show(). Reviewed-by: Josef Bacik <[email protected]> Signed-off-by: Anand Jain <[email protected]> Reviewed-by: David Sterba <[email protected]> Signed-off-by: David Sterba <[email protected]>
1 parent 3873247 commit 020e527

File tree

1 file changed

+44
-49
lines changed

1 file changed

+44
-49
lines changed

fs/btrfs/sysfs.c

Lines changed: 44 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ static ssize_t btrfs_feature_attr_show(struct kobject *kobj,
177177
} else
178178
val = can_modify_feature(fa);
179179

180-
return scnprintf(buf, PAGE_SIZE, "%d\n", val);
180+
return sysfs_emit(buf, "%d\n", val);
181181
}
182182

183183
static ssize_t btrfs_feature_attr_store(struct kobject *kobj,
@@ -330,7 +330,7 @@ static const struct attribute_group btrfs_feature_attr_group = {
330330
static ssize_t rmdir_subvol_show(struct kobject *kobj,
331331
struct kobj_attribute *ka, char *buf)
332332
{
333-
return scnprintf(buf, PAGE_SIZE, "0\n");
333+
return sysfs_emit(buf, "0\n");
334334
}
335335
BTRFS_ATTR(static_feature, rmdir_subvol, rmdir_subvol_show);
336336

@@ -345,20 +345,20 @@ static ssize_t supported_checksums_show(struct kobject *kobj,
345345
* This "trick" only works as long as 'enum btrfs_csum_type' has
346346
* no holes in it
347347
*/
348-
ret += scnprintf(buf + ret, PAGE_SIZE - ret, "%s%s",
349-
(i == 0 ? "" : " "), btrfs_super_csum_name(i));
348+
ret += sysfs_emit_at(buf, ret, "%s%s", (i == 0 ? "" : " "),
349+
btrfs_super_csum_name(i));
350350

351351
}
352352

353-
ret += scnprintf(buf + ret, PAGE_SIZE - ret, "\n");
353+
ret += sysfs_emit_at(buf, ret, "\n");
354354
return ret;
355355
}
356356
BTRFS_ATTR(static_feature, supported_checksums, supported_checksums_show);
357357

358358
static ssize_t send_stream_version_show(struct kobject *kobj,
359359
struct kobj_attribute *ka, char *buf)
360360
{
361-
return snprintf(buf, PAGE_SIZE, "%d\n", BTRFS_SEND_STREAM_VERSION);
361+
return sysfs_emit(buf, "%d\n", BTRFS_SEND_STREAM_VERSION);
362362
}
363363
BTRFS_ATTR(static_feature, send_stream_version, send_stream_version_show);
364364

@@ -378,9 +378,8 @@ static ssize_t supported_rescue_options_show(struct kobject *kobj,
378378
int i;
379379

380380
for (i = 0; i < ARRAY_SIZE(rescue_opts); i++)
381-
ret += scnprintf(buf + ret, PAGE_SIZE - ret, "%s%s",
382-
(i ? " " : ""), rescue_opts[i]);
383-
ret += scnprintf(buf + ret, PAGE_SIZE - ret, "\n");
381+
ret += sysfs_emit_at(buf, ret, "%s%s", (i ? " " : ""), rescue_opts[i]);
382+
ret += sysfs_emit_at(buf, ret, "\n");
384383
return ret;
385384
}
386385
BTRFS_ATTR(static_feature, supported_rescue_options,
@@ -394,10 +393,10 @@ static ssize_t supported_sectorsizes_show(struct kobject *kobj,
394393

395394
/* 4K sector size is also supported with 64K page size */
396395
if (PAGE_SIZE == SZ_64K)
397-
ret += scnprintf(buf + ret, PAGE_SIZE - ret, "%u ", SZ_4K);
396+
ret += sysfs_emit_at(buf, ret, "%u ", SZ_4K);
398397

399398
/* Only sectorsize == PAGE_SIZE is now supported */
400-
ret += scnprintf(buf + ret, PAGE_SIZE - ret, "%lu\n", PAGE_SIZE);
399+
ret += sysfs_emit_at(buf, ret, "%lu\n", PAGE_SIZE);
401400

402401
return ret;
403402
}
@@ -437,7 +436,7 @@ static ssize_t btrfs_discardable_bytes_show(struct kobject *kobj,
437436
{
438437
struct btrfs_fs_info *fs_info = discard_to_fs_info(kobj);
439438

440-
return scnprintf(buf, PAGE_SIZE, "%lld\n",
439+
return sysfs_emit(buf, "%lld\n",
441440
atomic64_read(&fs_info->discard_ctl.discardable_bytes));
442441
}
443442
BTRFS_ATTR(discard, discardable_bytes, btrfs_discardable_bytes_show);
@@ -448,7 +447,7 @@ static ssize_t btrfs_discardable_extents_show(struct kobject *kobj,
448447
{
449448
struct btrfs_fs_info *fs_info = discard_to_fs_info(kobj);
450449

451-
return scnprintf(buf, PAGE_SIZE, "%d\n",
450+
return sysfs_emit(buf, "%d\n",
452451
atomic_read(&fs_info->discard_ctl.discardable_extents));
453452
}
454453
BTRFS_ATTR(discard, discardable_extents, btrfs_discardable_extents_show);
@@ -459,8 +458,8 @@ static ssize_t btrfs_discard_bitmap_bytes_show(struct kobject *kobj,
459458
{
460459
struct btrfs_fs_info *fs_info = discard_to_fs_info(kobj);
461460

462-
return scnprintf(buf, PAGE_SIZE, "%llu\n",
463-
fs_info->discard_ctl.discard_bitmap_bytes);
461+
return sysfs_emit(buf, "%llu\n",
462+
fs_info->discard_ctl.discard_bitmap_bytes);
464463
}
465464
BTRFS_ATTR(discard, discard_bitmap_bytes, btrfs_discard_bitmap_bytes_show);
466465

@@ -470,7 +469,7 @@ static ssize_t btrfs_discard_bytes_saved_show(struct kobject *kobj,
470469
{
471470
struct btrfs_fs_info *fs_info = discard_to_fs_info(kobj);
472471

473-
return scnprintf(buf, PAGE_SIZE, "%lld\n",
472+
return sysfs_emit(buf, "%lld\n",
474473
atomic64_read(&fs_info->discard_ctl.discard_bytes_saved));
475474
}
476475
BTRFS_ATTR(discard, discard_bytes_saved, btrfs_discard_bytes_saved_show);
@@ -481,8 +480,8 @@ static ssize_t btrfs_discard_extent_bytes_show(struct kobject *kobj,
481480
{
482481
struct btrfs_fs_info *fs_info = discard_to_fs_info(kobj);
483482

484-
return scnprintf(buf, PAGE_SIZE, "%llu\n",
485-
fs_info->discard_ctl.discard_extent_bytes);
483+
return sysfs_emit(buf, "%llu\n",
484+
fs_info->discard_ctl.discard_extent_bytes);
486485
}
487486
BTRFS_ATTR(discard, discard_extent_bytes, btrfs_discard_extent_bytes_show);
488487

@@ -492,8 +491,8 @@ static ssize_t btrfs_discard_iops_limit_show(struct kobject *kobj,
492491
{
493492
struct btrfs_fs_info *fs_info = discard_to_fs_info(kobj);
494493

495-
return scnprintf(buf, PAGE_SIZE, "%u\n",
496-
READ_ONCE(fs_info->discard_ctl.iops_limit));
494+
return sysfs_emit(buf, "%u\n",
495+
READ_ONCE(fs_info->discard_ctl.iops_limit));
497496
}
498497

499498
static ssize_t btrfs_discard_iops_limit_store(struct kobject *kobj,
@@ -523,8 +522,8 @@ static ssize_t btrfs_discard_kbps_limit_show(struct kobject *kobj,
523522
{
524523
struct btrfs_fs_info *fs_info = discard_to_fs_info(kobj);
525524

526-
return scnprintf(buf, PAGE_SIZE, "%u\n",
527-
READ_ONCE(fs_info->discard_ctl.kbps_limit));
525+
return sysfs_emit(buf, "%u\n",
526+
READ_ONCE(fs_info->discard_ctl.kbps_limit));
528527
}
529528

530529
static ssize_t btrfs_discard_kbps_limit_store(struct kobject *kobj,
@@ -553,8 +552,8 @@ static ssize_t btrfs_discard_max_discard_size_show(struct kobject *kobj,
553552
{
554553
struct btrfs_fs_info *fs_info = discard_to_fs_info(kobj);
555554

556-
return scnprintf(buf, PAGE_SIZE, "%llu\n",
557-
READ_ONCE(fs_info->discard_ctl.max_discard_size));
555+
return sysfs_emit(buf, "%llu\n",
556+
READ_ONCE(fs_info->discard_ctl.max_discard_size));
558557
}
559558

560559
static ssize_t btrfs_discard_max_discard_size_store(struct kobject *kobj,
@@ -627,7 +626,7 @@ static ssize_t btrfs_show_u64(u64 *value_ptr, spinlock_t *lock, char *buf)
627626
val = *value_ptr;
628627
if (lock)
629628
spin_unlock(lock);
630-
return scnprintf(buf, PAGE_SIZE, "%llu\n", val);
629+
return sysfs_emit(buf, "%llu\n", val);
631630
}
632631

633632
static ssize_t global_rsv_size_show(struct kobject *kobj,
@@ -673,7 +672,7 @@ static ssize_t raid_bytes_show(struct kobject *kobj,
673672
val += block_group->used;
674673
}
675674
up_read(&sinfo->groups_sem);
676-
return scnprintf(buf, PAGE_SIZE, "%llu\n", val);
675+
return sysfs_emit(buf, "%llu\n", val);
677676
}
678677

679678
/*
@@ -771,7 +770,7 @@ static ssize_t btrfs_label_show(struct kobject *kobj,
771770
ssize_t ret;
772771

773772
spin_lock(&fs_info->super_lock);
774-
ret = scnprintf(buf, PAGE_SIZE, label[0] ? "%s\n" : "%s", label);
773+
ret = sysfs_emit(buf, label[0] ? "%s\n" : "%s", label);
775774
spin_unlock(&fs_info->super_lock);
776775

777776
return ret;
@@ -819,7 +818,7 @@ static ssize_t btrfs_nodesize_show(struct kobject *kobj,
819818
{
820819
struct btrfs_fs_info *fs_info = to_fs_info(kobj);
821820

822-
return scnprintf(buf, PAGE_SIZE, "%u\n", fs_info->super_copy->nodesize);
821+
return sysfs_emit(buf, "%u\n", fs_info->super_copy->nodesize);
823822
}
824823

825824
BTRFS_ATTR(, nodesize, btrfs_nodesize_show);
@@ -829,8 +828,7 @@ static ssize_t btrfs_sectorsize_show(struct kobject *kobj,
829828
{
830829
struct btrfs_fs_info *fs_info = to_fs_info(kobj);
831830

832-
return scnprintf(buf, PAGE_SIZE, "%u\n",
833-
fs_info->super_copy->sectorsize);
831+
return sysfs_emit(buf, "%u\n", fs_info->super_copy->sectorsize);
834832
}
835833

836834
BTRFS_ATTR(, sectorsize, btrfs_sectorsize_show);
@@ -840,7 +838,7 @@ static ssize_t btrfs_clone_alignment_show(struct kobject *kobj,
840838
{
841839
struct btrfs_fs_info *fs_info = to_fs_info(kobj);
842840

843-
return scnprintf(buf, PAGE_SIZE, "%u\n", fs_info->super_copy->sectorsize);
841+
return sysfs_emit(buf, "%u\n", fs_info->super_copy->sectorsize);
844842
}
845843

846844
BTRFS_ATTR(, clone_alignment, btrfs_clone_alignment_show);
@@ -852,7 +850,7 @@ static ssize_t quota_override_show(struct kobject *kobj,
852850
int quota_override;
853851

854852
quota_override = test_bit(BTRFS_FS_QUOTA_OVERRIDE, &fs_info->flags);
855-
return scnprintf(buf, PAGE_SIZE, "%d\n", quota_override);
853+
return sysfs_emit(buf, "%d\n", quota_override);
856854
}
857855

858856
static ssize_t quota_override_store(struct kobject *kobj,
@@ -890,8 +888,7 @@ static ssize_t btrfs_metadata_uuid_show(struct kobject *kobj,
890888
{
891889
struct btrfs_fs_info *fs_info = to_fs_info(kobj);
892890

893-
return scnprintf(buf, PAGE_SIZE, "%pU\n",
894-
fs_info->fs_devices->metadata_uuid);
891+
return sysfs_emit(buf, "%pU\n", fs_info->fs_devices->metadata_uuid);
895892
}
896893

897894
BTRFS_ATTR(, metadata_uuid, btrfs_metadata_uuid_show);
@@ -902,9 +899,9 @@ static ssize_t btrfs_checksum_show(struct kobject *kobj,
902899
struct btrfs_fs_info *fs_info = to_fs_info(kobj);
903900
u16 csum_type = btrfs_super_csum_type(fs_info->super_copy);
904901

905-
return scnprintf(buf, PAGE_SIZE, "%s (%s)\n",
906-
btrfs_super_csum_name(csum_type),
907-
crypto_shash_driver_name(fs_info->csum_shash));
902+
return sysfs_emit(buf, "%s (%s)\n",
903+
btrfs_super_csum_name(csum_type),
904+
crypto_shash_driver_name(fs_info->csum_shash));
908905
}
909906

910907
BTRFS_ATTR(, checksum, btrfs_checksum_show);
@@ -941,7 +938,7 @@ static ssize_t btrfs_exclusive_operation_show(struct kobject *kobj,
941938
str = "UNKNOWN\n";
942939
break;
943940
}
944-
return scnprintf(buf, PAGE_SIZE, "%s", str);
941+
return sysfs_emit(buf, "%s", str);
945942
}
946943
BTRFS_ATTR(, exclusive_operation, btrfs_exclusive_operation_show);
947944

@@ -950,7 +947,7 @@ static ssize_t btrfs_generation_show(struct kobject *kobj,
950947
{
951948
struct btrfs_fs_info *fs_info = to_fs_info(kobj);
952949

953-
return scnprintf(buf, PAGE_SIZE, "%llu\n", fs_info->generation);
950+
return sysfs_emit(buf, "%llu\n", fs_info->generation);
954951
}
955952
BTRFS_ATTR(, generation, btrfs_generation_show);
956953

@@ -1028,8 +1025,7 @@ static ssize_t btrfs_bg_reclaim_threshold_show(struct kobject *kobj,
10281025
struct btrfs_fs_info *fs_info = to_fs_info(kobj);
10291026
ssize_t ret;
10301027

1031-
ret = scnprintf(buf, PAGE_SIZE, "%d\n",
1032-
READ_ONCE(fs_info->bg_reclaim_threshold));
1028+
ret = sysfs_emit(buf, "%d\n", READ_ONCE(fs_info->bg_reclaim_threshold));
10331029

10341030
return ret;
10351031
}
@@ -1471,7 +1467,7 @@ static ssize_t btrfs_devinfo_in_fs_metadata_show(struct kobject *kobj,
14711467

14721468
val = !!test_bit(BTRFS_DEV_STATE_IN_FS_METADATA, &device->dev_state);
14731469

1474-
return scnprintf(buf, PAGE_SIZE, "%d\n", val);
1470+
return sysfs_emit(buf, "%d\n", val);
14751471
}
14761472
BTRFS_ATTR(devid, in_fs_metadata, btrfs_devinfo_in_fs_metadata_show);
14771473

@@ -1484,7 +1480,7 @@ static ssize_t btrfs_devinfo_missing_show(struct kobject *kobj,
14841480

14851481
val = !!test_bit(BTRFS_DEV_STATE_MISSING, &device->dev_state);
14861482

1487-
return scnprintf(buf, PAGE_SIZE, "%d\n", val);
1483+
return sysfs_emit(buf, "%d\n", val);
14881484
}
14891485
BTRFS_ATTR(devid, missing, btrfs_devinfo_missing_show);
14901486

@@ -1498,7 +1494,7 @@ static ssize_t btrfs_devinfo_replace_target_show(struct kobject *kobj,
14981494

14991495
val = !!test_bit(BTRFS_DEV_STATE_REPLACE_TGT, &device->dev_state);
15001496

1501-
return scnprintf(buf, PAGE_SIZE, "%d\n", val);
1497+
return sysfs_emit(buf, "%d\n", val);
15021498
}
15031499
BTRFS_ATTR(devid, replace_target, btrfs_devinfo_replace_target_show);
15041500

@@ -1509,8 +1505,7 @@ static ssize_t btrfs_devinfo_scrub_speed_max_show(struct kobject *kobj,
15091505
struct btrfs_device *device = container_of(kobj, struct btrfs_device,
15101506
devid_kobj);
15111507

1512-
return scnprintf(buf, PAGE_SIZE, "%llu\n",
1513-
READ_ONCE(device->scrub_speed_max));
1508+
return sysfs_emit(buf, "%llu\n", READ_ONCE(device->scrub_speed_max));
15141509
}
15151510

15161511
static ssize_t btrfs_devinfo_scrub_speed_max_store(struct kobject *kobj,
@@ -1538,7 +1533,7 @@ static ssize_t btrfs_devinfo_writeable_show(struct kobject *kobj,
15381533

15391534
val = !!test_bit(BTRFS_DEV_STATE_WRITEABLE, &device->dev_state);
15401535

1541-
return scnprintf(buf, PAGE_SIZE, "%d\n", val);
1536+
return sysfs_emit(buf, "%d\n", val);
15421537
}
15431538
BTRFS_ATTR(devid, writeable, btrfs_devinfo_writeable_show);
15441539

@@ -1549,14 +1544,14 @@ static ssize_t btrfs_devinfo_error_stats_show(struct kobject *kobj,
15491544
devid_kobj);
15501545

15511546
if (!device->dev_stats_valid)
1552-
return scnprintf(buf, PAGE_SIZE, "invalid\n");
1547+
return sysfs_emit(buf, "invalid\n");
15531548

15541549
/*
15551550
* Print all at once so we get a snapshot of all values from the same
15561551
* time. Keep them in sync and in order of definition of
15571552
* btrfs_dev_stat_values.
15581553
*/
1559-
return scnprintf(buf, PAGE_SIZE,
1554+
return sysfs_emit(buf,
15601555
"write_errs %d\n"
15611556
"read_errs %d\n"
15621557
"flush_errs %d\n"

0 commit comments

Comments
 (0)