fat: fix several checkpatch warnings
cover fat: fix several checkpatch warnings
fix 3 type of checkpatch warnings, each type per patch:
- unnecessary/prohibited whitespaces
- missing blank lines after declarations
- quoted string split across lines
The patchset was based on linux-next tree, tag next-20170714
Carlos Palminha (3):
fat: remove prohibited spaces
fat: add missing blank lines
fat: fix quoted string splits
fs/fat/cache.c | 5 +++-- fs/fat/dir.c | 7 ++++++- fs/fat/fatent.c | 8 ++++++++ fs/fat/file.c | 2 ++ fs/fat/inode.c | 30 ++++++++++++++++++++++-------- fs/fat/misc.c | 2 ++ fs/fat/namei_msdos.c | 1 + fs/fat/namei_vfat.c | 6 +++++- fs/fat/nfs.c | 5 ++++- 9 files changed, 53 insertions(+), 13 deletions(-)
Signature · 1 line
2.11.0
PATCH 1/3 fat: remove prohibited spaces
remove prohibited spaces based on checkpatch
--- fs/fat/dir.c | 2 +- fs/fat/namei_vfat.c | 2 +- fs/fat/nfs.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)
fs/fat/dir.c +1 -1
@@ -915,7 +915,7 @@ int fat_dir_empty(struct inode *dir) bh =NULL ; cpos =0 ;while (fat_get_short_entry (dir, &cpos, &bh, &de) >=0 ) { -if (strncmp (de->name,MSDOS_DOT ,MSDOS_NAME ) && +if (strncmp (de->name,MSDOS_DOT ,MSDOS_NAME ) &&strncmp (de->name,MSDOS_DOTDOT ,MSDOS_NAME )) { result = -ENOTEMPTY ;break ;
fs/fat/namei_vfat.c +1 -1
@@ -983,7 +983,7 @@ static int vfat_rename(struct inode *old_dir, struct dentry *old_dentry, }drop_nlink (old_dir);if (!new_inode) -inc_nlink (new_dir); +inc_nlink (new_dir); } err =fat_remove_entries (old_dir, &old_sinfo);/* and releases bh */
fs/fat/nfs.c +1 -1
@@ -73,7 +73,7 @@ static struct inode *__fat_nfs_get_inode(struct super_block *sb, }if (inode ==NULL &&MSDOS_SB (sb)->options.nfs ==FAT_NFS_NOSTALE_RO ) {struct buffer_head *bh =NULL ; -struct msdos_dir_entry *de ; +struct msdos_dir_entry *de;sector_t blocknr;int offset;fat_get_blknr_offset (MSDOS_SB (sb), i_pos, &blocknr, &offset);
Signature · 1 line
2.11.0
PATCH 2/3 fat: add missing blank lines
In reply to Carlos Palminhaadd missing blank lines after declarations, based on checkpatch.
--- fs/fat/cache.c | 1 + fs/fat/dir.c | 5 +++++ fs/fat/fatent.c | 8 ++++++++ fs/fat/file.c | 2 ++ fs/fat/inode.c | 12 ++++++++++++ fs/fat/misc.c | 2 ++ fs/fat/namei_msdos.c | 1 + fs/fat/namei_vfat.c | 4 ++++ fs/fat/nfs.c | 3 +++ 9 files changed, 38 insertions(+)
fs/fat/cache.c +1 -0
@@ -166,6 +166,7 @@ static void fat_cache_add(struct inode *inode, struct fat_cache_id *new) cache = tmp; }else {struct list_head *p =MSDOS_I (inode)->cache_lru.prev; + cache = list_entry(p, struct fat_cache, cache_list); } cache->fcluster = new->fcluster;
fs/fat/dir.c +5 -0
@@ -182,6 +182,7 @@ static inline int fat_uni_to_x8(struct super_block *sb, const wchar_t *uni, unsigned char *buf, int size) {struct msdos_sb_info *sbi =MSDOS_SB (sb); +if (sbi->options.utf8)return utf16s_to_utf8s (uni,FAT_MAX_UNI_CHARS ,UTF16_HOST_ENDIAN , buf, size);
@@ -430,6 +431,7 @@ static int fat_parse_short(struct super_block *sb, uni_len = j;if (isvfat) {int offset =min (chl,MSDOS_NAME -k); + k += offset; i += offset; }else {
@@ -668,6 +670,7 @@ static int __fat_readdir(struct inode *inode, struct file *file,unsigned long inum;loff_t i_pos =fat_make_i_pos (sb, bh, de);struct inode *tmp =fat_iget (sb, i_pos); +if (tmp) { inum = tmp->i_ino;iput (tmp);
@@ -1337,6 +1340,7 @@ int fat_add_entries(struct inode *dir, void *slots, int nr_slots,/* Fill the long name slots. */ for (i =0 ; i < long_bhs; i++) {int copy =min_t (int, sb->s_blocksize - offset, size); +memcpy (bhs[i]->b_data + offset, slots, copy);mark_buffer_dirty_inode (bhs[i], dir); offset =0 ;
@@ -1348,6 +1352,7 @@ int fat_add_entries(struct inode *dir, void *slots, int nr_slots,if (!err && i < nr_bhs) {/* Fill the short name slot. */ int copy =min_t (int, sb->s_blocksize - offset, size); +memcpy (bhs[i]->b_data + offset, slots, copy);mark_buffer_dirty_inode (bhs[i], dir);if (IS_DIRSYNC (dir))
fs/fat/fatent.c +8 -0
@@ -23,6 +23,7 @@ static void fat12_ent_blocknr(struct super_block *sb, int entry, {struct msdos_sb_info *sbi =MSDOS_SB (sb);int bytes = entry + (entry >>1 ); +WARN_ON (entry <FAT_START_ENT || sbi->max_cluster <= entry); *offset = bytes & (sb->s_blocksize -1 ); *blocknr = sbi->fat_start + (bytes >> sb->s_blocksize_bits);
@@ -33,6 +34,7 @@ static void fat_ent_blocknr(struct super_block *sb, int entry, {struct msdos_sb_info *sbi =MSDOS_SB (sb);int bytes = (entry << sbi->fatent_shift); +WARN_ON (entry <FAT_START_ENT || sbi->max_cluster <= entry); *offset = bytes & (sb->s_blocksize -1 ); *blocknr = sbi->fat_start + (bytes >> sb->s_blocksize_bits);
@@ -41,6 +43,7 @@ static void fat_ent_blocknr(struct super_block *sb, int entry,static void fat12_ent_set_ptr (struct fat_entry *fatent,int offset) {struct buffer_head **bhs = fatent->bhs; +if (fatent->nr_bhs ==1 ) {WARN_ON (offset >= (bhs[0 ]->b_size -1 )); fatent->u.ent12_p[0 ] = bhs[0 ]->b_data + offset;
@@ -135,6 +138,7 @@ static int fat12_ent_get(struct fat_entry *fatent)static int fat16_ent_get (struct fat_entry *fatent) {int next =le16_to_cpu (*fatent->u.ent16_p); +WARN_ON ((unsigned long )fatent->u.ent16_p & (2 -1 ));if (next >=BAD_FAT16 ) next =FAT_ENT_EOF ;
@@ -144,6 +148,7 @@ static int fat16_ent_get(struct fat_entry *fatent)static int fat32_ent_get (struct fat_entry *fatent) {int next =le32_to_cpu (*fatent->u.ent32_p) &0x0fffffff ; +WARN_ON ((unsigned long )fatent->u.ent32_p & (4 -1 ));if (next >=BAD_FAT32 ) next =FAT_ENT_EOF ;
@@ -225,6 +230,7 @@ static int fat12_ent_next(struct fat_entry *fatent)static int fat16_ent_next (struct fat_entry *fatent) {const struct buffer_head *bh = fatent->bhs[0 ]; + fatent->entry++;if (fatent->u.ent16_p < (__le16 *)(bh->b_data + (bh->b_size -2 ))) { fatent->u.ent16_p++;
@@ -237,6 +243,7 @@ static int fat16_ent_next(struct fat_entry *fatent)static int fat32_ent_next (struct fat_entry *fatent) {const struct buffer_head *bh = fatent->bhs[0 ]; + fatent->entry++;if (fatent->u.ent32_p < (__le32 *)(bh->b_data + (bh->b_size -4 ))) { fatent->u.ent32_p++;
@@ -669,6 +676,7 @@ int fat_count_free_clusters(struct super_block *sb)/* readahead of fat blocks */ if ((cur_block & reada_mask) ==0 ) {unsigned long rest = sbi->fat_length - cur_block; +fat_ent_reada (sb, &fatent,min (reada_blocks, rest)); } cur_block++;
fs/fat/file.c +2 -0
@@ -118,6 +118,7 @@ static int fat_ioctl_set_attributes(struct file *file, u32 __user *user_attr)static int fat_ioctl_get_volume_id (struct inode *inode,u32 __user *user_attr) {struct msdos_sb_info *sbi =MSDOS_SB (inode->i_sb); +return put_user (sbi->vol_id, user_attr); }
@@ -369,6 +370,7 @@ int fat_getattr(const struct path *path, struct kstat *stat, u32 request_mask, unsigned int flags) {struct inode *inode =d_inode (path->dentry); +generic_fillattr (inode, stat); stat->blksize =MSDOS_SB (inode->i_sb)->cluster_size;
fs/fat/inode.c +12 -0
@@ -233,6 +233,7 @@ static int fat_write_end(struct file *file, struct address_space *mapping, {struct inode *inode = mapping->host;int err; + err =generic_write_end (file, mapping, pos, len, copied, pagep, fsdata);if (err < len)fat_write_failed (mapping, pos + len);
@@ -408,6 +409,7 @@ void fat_attach(struct inode *inode, loff_t i_pos)*/ if (S_ISDIR (inode->i_mode) && sbi->options.nfs) {struct hlist_head *d_head = sbi->dir_hashtable; + d_head +=fat_dir_hash (MSDOS_I (inode)->i_logstart);spin_lock (&sbi->dir_hash_lock);
@@ -420,6 +422,7 @@ EXPORT_SYMBOL_GPL(fat_attach);void fat_detach (struct inode *inode) {struct msdos_sb_info *sbi =MSDOS_SB (inode->i_sb); +spin_lock (&sbi->inode_hash_lock);MSDOS_I (inode)->i_pos =0 ;hlist_del_init (&MSDOS_I (inode)->i_fat_hash);
@@ -699,6 +702,7 @@ static void fat_set_state(struct super_block *sb,static void delayed_free (struct rcu_head *p) { struct msdos_sb_info *sbi = container_of(p, struct msdos_sb_info, rcu); +unload_nls (sbi->nls_disk);unload_nls (sbi->nls_io);if (sbi->options.iocharset != fat_default_iocharset)
@@ -723,6 +727,7 @@ static struct kmem_cache *fat_inode_cachep;static struct inode *fat_alloc_inode (struct super_block *sb) {struct msdos_inode_info *ei; + ei =kmem_cache_alloc (fat_inode_cachep,GFP_NOFS );if (!ei)return NULL ;
@@ -734,6 +739,7 @@ static struct inode *fat_alloc_inode(struct super_block *sb)static void fat_i_callback (struct rcu_head *head) { struct inode *inode = container_of(head, struct inode, i_rcu); +kmem_cache_free (fat_inode_cachep,MSDOS_I (inode)); }
@@ -805,6 +811,7 @@ static int fat_statfs(struct dentry *dentry, struct kstatfs *buf)/* If the count of free cluster is still unknown, counts it here. */ if (sbi->free_clusters ==-1 || !sbi->free_clus_valid) {int err =fat_count_free_clusters (dentry->d_sb); +if (err)return err; }
@@ -1142,6 +1149,7 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,while ((p =strsep (&options,"," )) !=NULL ) {int token; +if (!*p)continue ;
@@ -1411,6 +1419,7 @@ static unsigned long calc_fat_clusters(struct super_block *sb)/* Divide first to avoid overflow */ if (sbi->fat_bits !=12 ) {unsigned long ent_per_sec = sb->s_blocksize *8 / sbi->fat_bits; +return ent_per_sec * sbi->fat_length; }
@@ -1845,6 +1854,7 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat,if (sbi->options.discard) {struct request_queue *q =bdev_get_queue (sb->s_bdev); +if (!blk_queue_discard (q))fat_msg (sb,KERN_WARNING , "mounting with \"discard\" option, but "
@@ -1907,6 +1917,7 @@ static int writeback_inode(struct inode *inode)int fat_flush_inodes (struct super_block *sb,struct inode *i1,struct inode *i2) {int ret =0 ; +if (!MSDOS_SB (sb)->options.flush)return 0 ;if (i1)
@@ -1915,6 +1926,7 @@ int fat_flush_inodes(struct super_block *sb, struct inode *i1, struct inode *i2) ret =writeback_inode (i2);if (!ret) {struct address_space *mapping = sb->s_bdev->bd_inode->i_mapping; + ret =filemap_flush (mapping); }return ret;
fs/fat/misc.c +2 -0
@@ -125,6 +125,7 @@ int fat_chain_add(struct inode *inode, int new_dclus, int nr_cluster) ret =fat_ent_read (inode, &fatent, last);if (ret >=0 ) {int wait =inode_needs_sync (inode); + ret =fat_ent_write (inode, &fatent, new_dclus, wait);fatent_brelse (&fatent); }
@@ -228,6 +229,7 @@ void fat_time_unix2fat(struct msdos_sb_info *sbi, struct timespec *ts, __le16 *time, __le16 *date, u8 *time_cs) {struct tm tm; +time_to_tm (ts->tv_sec, (sbi->options.tz_set ? sbi->options.time_offset : -sys_tz.tz_minuteswest) *SECS_PER_MIN , &tm);
fs/fat/namei_msdos.c +1 -0
@@ -582,6 +582,7 @@ static int do_msdos_rename(struct inode *old_dir, unsigned char *old_name,* shouldn't be serious corruption. */ int err2 =fat_remove_entries (new_dir, &sinfo); +if (corrupt) corrupt |= err2; sinfo.bh =NULL ;
fs/fat/namei_vfat.c +4 -0
@@ -43,6 +43,7 @@ static inline void vfat_d_version_set(struct dentry *dentry,static int vfat_revalidate_shortname (struct dentry *dentry) {int ret =1 ; +spin_lock (&dentry->d_lock);if (vfat_d_version (dentry) !=d_inode (dentry->d_parent)->i_version) ret =0 ;
@@ -234,6 +235,7 @@ static int vfat_find_form(struct inode *dir, unsigned char *name) {struct fat_slot_info sinfo;int err =fat_scan (dir, name, &sinfo); +if (err)return -ENOENT ;brelse (sinfo.bh);
@@ -703,6 +705,7 @@ static int vfat_find(struct inode *dir, const struct qstr *qname, struct fat_slot_info *sinfo) {unsigned int len =vfat_striptail_len (qname); +if (len ==0 )return -ENOENT ;return fat_search_long (dir, qname->name, len, sinfo);
@@ -1033,6 +1036,7 @@ static int vfat_rename(struct inode *old_dir, struct dentry *old_dentry,* shouldn't be serious corruption. */ int err2 =fat_remove_entries (new_dir, &sinfo); +if (corrupt) corrupt |= err2; sinfo.bh =NULL ;
fs/fat/nfs.c +3 -0
@@ -76,6 +76,7 @@ static struct inode *__fat_nfs_get_inode(struct super_block *sb,struct msdos_dir_entry *de;sector_t blocknr;int offset; +fat_get_blknr_offset (MSDOS_SB (sb), i_pos, &blocknr, &offset); bh =sb_bread (sb, blocknr);if (!bh) {
@@ -230,6 +231,7 @@ struct inode *fat_rebuild_parent(struct super_block *sb, int parent_logstart)struct msdos_sb_info *sbi =MSDOS_SB (sb);sector_t blknr =fat_clus_to_blknr (sbi, parent_logstart);struct buffer_head *parent_bh =sb_bread (sb, blknr); +if (!parent_bh) {fat_msg (sb,KERN_ERR ,"unable to read cluster of parent directory" );
@@ -278,6 +280,7 @@ static struct dentry *fat_get_parent(struct dentry *child_dir)if (!fat_get_dotdot_entry (d_inode (child_dir), &bh, &de)) {int parent_logstart =fat_get_start (sbi, de); + parent_inode =fat_dget (sb, parent_logstart);if (!parent_inode && sbi->options.nfs ==FAT_NFS_NOSTALE_RO ) parent_inode =fat_rebuild_parent (sb, parent_logstart);
Signature · 1 line
2.11.0
PATCH 3/3 fat: fix quoted string splits
In reply to Carlos Palminhacorrects quoted string split across lines, based on checkpatch.
--- fs/fat/cache.c | 4 ++-- fs/fat/inode.c | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-)
fs/fat/cache.c +2 -2
@@ -250,8 +250,8 @@ int fat_get_cluster(struct inode *inode, int cluster, int *fclus, int *dclus)/* prevent the infinite loop of cluster chain */ if (*fclus > limit) {fat_fs_error_ratelimit (sb, -"%s: detected the cluster chain loop" -" (i_pos %lld)" , __func__, +"%s: detected the cluster chain loop (i_pos %lld)" , + __func__,MSDOS_I (inode)->i_pos); nr = -EIO ; goto out;
fs/fat/inode.c +10 -8
@@ -1673,8 +1673,8 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat,/* Verify that the larger boot sector is fully readable */ bh_resize =sb_bread (sb,0 );if (bh_resize ==NULL ) { -fat_msg (sb,KERN_ERR ,"unable to read boot sector" -" (logical sector size = %lu)" , +fat_msg (sb,KERN_ERR , +"unable to read boot sector (logical sector size = %lu)" , sb->s_blocksize); goto out_fail; }
@@ -1710,15 +1710,16 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat, fsinfo_bh =sb_bread (sb, sbi->fsinfo_sector);if (fsinfo_bh ==NULL ) { -fat_msg (sb,KERN_ERR ,"bread failed, FSINFO block" -" (sector = %lu)" , sbi->fsinfo_sector); +fat_msg (sb,KERN_ERR , +"bread failed, FSINFO block (sector = %lu)" , + sbi->fsinfo_sector); goto out_fail; } fsinfo = (struct fat_boot_fsinfo *)fsinfo_bh->b_data;if (!IS_FSINFO (fsinfo)) { -fat_msg (sb,KERN_WARNING ,"Invalid FSINFO signature: " -"0x%08x, 0x%08x (sector = %lu)" , +fat_msg (sb,KERN_WARNING , +"Invalid FSINFO signature: 0x%08x, 0x%08x (sector = %lu)" ,le32_to_cpu (fsinfo->signature1),le32_to_cpu (fsinfo->signature2), sbi->fsinfo_sector);
@@ -1745,8 +1746,9 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat, sbi->dir_entries = bpb.fat_dir_entries;if (sbi->dir_entries & (sbi->dir_per_block -1 )) {if (!silent) -fat_msg (sb,KERN_ERR ,"bogus number of directory entries" -" (%u)" , sbi->dir_entries); +fat_msg (sb,KERN_ERR , +"bogus number of directory entries (%u)" , + sbi->dir_entries); goto out_invalid; }
Signature · 1 line
2.11.0
Re: [PATCH 3/3] fat: fix quoted string splits
Quoted 1 line · Carlos Palminha
corrects quoted string split across lines, based on checkpatch.
At some point you may switch
fat_msg(sb, KERN_ERR, ...)
to
fat_fs_error(sb, ...)
Quoted 73 lines
Signed-off-by Carlos Palminha <[email protected]>--- fs/fat/cache.c | 4 ++-- fs/fat/inode.c | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-)fs/fat/cache.c +2
-2@@ -250,8 +250,8 @@ int fat_get_cluster(struct inode *inode, int cluster, int *fclus, int *dclus)/* prevent the infinite loop of cluster chain */ if (*fclus > limit) {fat_fs_error_ratelimit (sb, -"%s: detected the cluster chain loop" -" (i_pos %lld)" , __func__, +"%s: detected the cluster chain loop (i_pos %lld)" , + __func__,MSDOS_I (inode)->i_pos); nr = -EIO ; goto out;fs/fat/inode.c +10
-9@@ -1673,8 +1673,8 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat,/* Verify that the larger boot sector is fully readable */ bh_resize =sb_bread (sb,0 );if (bh_resize ==NULL ) { -fat_msg (sb,KERN_ERR ,"unable to read boot sector" -" (logical sector size = %lu)" , +fat_msg (sb,KERN_ERR , +"unable to read boot sector (logical sector size = %lu)" , sb->s_blocksize); goto out_fail; }@@ -1710,15 +1710,16 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat, fsinfo_bh =sb_bread (sb, sbi->fsinfo_sector);if (fsinfo_bh ==NULL ) { -fat_msg (sb,KERN_ERR ,"bread failed, FSINFO block" -" (sector = %lu)" , sbi->fsinfo_sector); +fat_msg (sb,KERN_ERR , +"bread failed, FSINFO block (sector = %lu)" , + sbi->fsinfo_sector); goto out_fail; } fsinfo = (struct fat_boot_fsinfo *)fsinfo_bh->b_data;if (!IS_FSINFO (fsinfo)) { -fat_msg (sb,KERN_WARNING ,"Invalid FSINFO signature: " -"0x%08x, 0x%08x (sector = %lu)" , +fat_msg (sb,KERN_WARNING , +"Invalid FSINFO signature: 0x%08x, 0x%08x (sector = %lu)" ,le32_to_cpu (fsinfo->signature1),le32_to_cpu (fsinfo->signature2), sbi->fsinfo_sector);@@ -1745,8 +1746,9 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat, sbi->dir_entries = bpb.fat_dir_entries;if (sbi->dir_entries & (sbi->dir_per_block -1 )) {if (!silent) -fat_msg (sb,KERN_ERR ,"bogus number of directory entries" -" (%u)" , sbi->dir_entries); +fat_msg (sb,KERN_ERR , +"bogus number of directory entries (%u)" , + sbi->dir_entries); goto out_invalid; } --2.11.0
Signature · 2 lines
With Best Regards, Andy Shevchenko
Re: [PATCH 3/3] fat: fix quoted string splits
Quoted 11 lines · Andy Shevchenko
Quoted 1 line · Carlos Palminha
corrects quoted string split across lines, based on checkpatch.
At some point you may switch
fat_msg(sb, KERN_ERR, ...)to
fat_fs_error(sb, ...)
The output would be different.
Re: [PATCH 3/3] fat: fix quoted string splits
Quoted 7 lines · Joe Perches
Quoted 6 lines · Andy Shevchenko
Quoted 1 line · Carlos Palminha
corrects quoted string split across lines, based on checkpatch.
At some point you may switch
Quoted 7 lines
Quoted 5 lines
fat_msg(sb, KERN_ERR, ...)to
fat_fs_error(sb, ...)The output would be different.
As much as it adds 'error, ' at the beginning of message. I can't consider this a bad idea.
Signature · 2 lines
With Best Regards, Andy Shevchenko
Re: [PATCH 3/3] fat: fix quoted string splits
Quoted 10 lines · Andy Shevchenko
Quoted 9 lines · Joe Perches
Quoted 8 lines · Andy Shevchenko
Quoted 1 line · Carlos Palminha
corrects quoted string split across lines, based on checkpatch.
At some point you may switch
fat_msg(sb, KERN_ERR, ...)
Quoted 8 lines
Quoted 5 lines
Quoted 3 lines
to
fat_fs_error(sb, ...)The output would be different.
As much as it adds 'error, ' at the beginning of message. I can't consider this a bad idea.
Adding "error" to KERN_ERR output is unnecessary
and if really desired, should be done by dmesg
or equivalent.
Re: [PATCH 3/3] fat: fix quoted string splits
Quoted 9 lines · Joe Perches
Quoted 4 lines · Andy Shevchenko
On Sat, Jul 15, 2017 at 7:18 AM, Joe Perches <[email protected]> wrote:
As much as it adds 'error, ' at the beginning of message. I can't consider this a bad idea.
Adding "error" to
KERN_ERRoutput is unnecessary
and if really desired, should be done by dmesg
or equivalent.
Shouldn't be fixed in the function itself (__fat_fs_error())?
Anyway, this discussion is obviously for a separate change. The original patch looks okay.
Signature · 2 lines
With Best Regards, Andy Shevchenko