Skip to content

Commit 57341fe

Browse files
LiBaokun96tytso
authored andcommitted
ext4: refactor out ext4_generic_attr_show()
Refactor out the function ext4_generic_attr_show() to handle the reading of values of various common types, with no functional changes. Signed-off-by: Baokun Li <libaokun1@huawei.com> Reviewed-by: Zhang Yi <yi.zhang@huawei.com> Reviewed-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20240319113325.3110393-4-libaokun1@huawei.com Signed-off-by: Theodore Ts'o <tytso@mit.edu>
1 parent f536808 commit 57341fe

1 file changed

Lines changed: 32 additions & 42 deletions

File tree

fs/ext4/sysfs.c

Lines changed: 32 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -366,13 +366,42 @@ static ssize_t __print_tstamp(char *buf, __le32 lo, __u8 hi)
366366
#define print_tstamp(buf, es, tstamp) \
367367
__print_tstamp(buf, (es)->tstamp, (es)->tstamp ## _hi)
368368

369+
static ssize_t ext4_generic_attr_show(struct ext4_attr *a,
370+
struct ext4_sb_info *sbi, char *buf)
371+
{
372+
void *ptr = calc_ptr(a, sbi);
373+
374+
if (!ptr)
375+
return 0;
376+
377+
switch (a->attr_id) {
378+
case attr_inode_readahead:
379+
case attr_pointer_ui:
380+
if (a->attr_ptr == ptr_ext4_super_block_offset)
381+
return sysfs_emit(buf, "%u\n", le32_to_cpup(ptr));
382+
return sysfs_emit(buf, "%u\n", *((unsigned int *) ptr));
383+
case attr_pointer_ul:
384+
return sysfs_emit(buf, "%lu\n", *((unsigned long *) ptr));
385+
case attr_pointer_u8:
386+
return sysfs_emit(buf, "%u\n", *((unsigned char *) ptr));
387+
case attr_pointer_u64:
388+
if (a->attr_ptr == ptr_ext4_super_block_offset)
389+
return sysfs_emit(buf, "%llu\n", le64_to_cpup(ptr));
390+
return sysfs_emit(buf, "%llu\n", *((unsigned long long *) ptr));
391+
case attr_pointer_string:
392+
return sysfs_emit(buf, "%.*s\n", a->attr_size, (char *) ptr);
393+
case attr_pointer_atomic:
394+
return sysfs_emit(buf, "%d\n", atomic_read((atomic_t *) ptr));
395+
}
396+
return 0;
397+
}
398+
369399
static ssize_t ext4_attr_show(struct kobject *kobj,
370400
struct attribute *attr, char *buf)
371401
{
372402
struct ext4_sb_info *sbi = container_of(kobj, struct ext4_sb_info,
373403
s_kobj);
374404
struct ext4_attr *a = container_of(attr, struct ext4_attr, attr);
375-
void *ptr = calc_ptr(a, sbi);
376405

377406
switch (a->attr_id) {
378407
case attr_delayed_allocation_blocks:
@@ -391,45 +420,6 @@ static ssize_t ext4_attr_show(struct kobject *kobj,
391420
return sysfs_emit(buf, "%llu\n",
392421
(unsigned long long)
393422
percpu_counter_sum(&sbi->s_sra_exceeded_retry_limit));
394-
case attr_inode_readahead:
395-
case attr_pointer_ui:
396-
if (!ptr)
397-
return 0;
398-
if (a->attr_ptr == ptr_ext4_super_block_offset)
399-
return sysfs_emit(buf, "%u\n",
400-
le32_to_cpup(ptr));
401-
else
402-
return sysfs_emit(buf, "%u\n",
403-
*((unsigned int *) ptr));
404-
case attr_pointer_ul:
405-
if (!ptr)
406-
return 0;
407-
return sysfs_emit(buf, "%lu\n",
408-
*((unsigned long *) ptr));
409-
case attr_pointer_u8:
410-
if (!ptr)
411-
return 0;
412-
return sysfs_emit(buf, "%u\n",
413-
*((unsigned char *) ptr));
414-
case attr_pointer_u64:
415-
if (!ptr)
416-
return 0;
417-
if (a->attr_ptr == ptr_ext4_super_block_offset)
418-
return sysfs_emit(buf, "%llu\n",
419-
le64_to_cpup(ptr));
420-
else
421-
return sysfs_emit(buf, "%llu\n",
422-
*((unsigned long long *) ptr));
423-
case attr_pointer_string:
424-
if (!ptr)
425-
return 0;
426-
return sysfs_emit(buf, "%.*s\n", a->attr_size,
427-
(char *) ptr);
428-
case attr_pointer_atomic:
429-
if (!ptr)
430-
return 0;
431-
return sysfs_emit(buf, "%d\n",
432-
atomic_read((atomic_t *) ptr));
433423
case attr_feature:
434424
return sysfs_emit(buf, "supported\n");
435425
case attr_first_error_time:
@@ -438,9 +428,9 @@ static ssize_t ext4_attr_show(struct kobject *kobj,
438428
return print_tstamp(buf, sbi->s_es, s_last_error_time);
439429
case attr_journal_task:
440430
return journal_task_show(sbi, buf);
431+
default:
432+
return ext4_generic_attr_show(a, sbi, buf);
441433
}
442-
443-
return 0;
444434
}
445435

446436
static ssize_t ext4_generic_attr_store(struct ext4_attr *a,

0 commit comments

Comments
 (0)