1
-----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEEq1nRK9aeMoq1VSgcnJ2qBz9kQNkFAmbxQcMACgkQnJ2qBz9k
 QNm7vwf7BF/8EXviJq58Nkifay1miMcZmaJk9LCWY3zB6Ce5ZzmqdtJbs0/RmCAq
 q67lqsDibu5tMaIh+WOQ9RLPOQi1UFlmKzOCIdbrGzMFkHHW758+KUMdbo6CR3Bi
 T4TAsRRLwOkZW+cTGhtF43EY3sSKiNPgGeeDcCBKXGYi259Wmq22SZLoy9EmOVKe
 bNlK+zbKCaVJtgmvaN2MGmc+vamOgSBTZ+vXDrokDOmmyLr66ozrrvvSa3SOKeDA
 9alTE0jjRdhjMOjpYH7yy1x3LtLez5qAA0rK/WPiuQSx0wGvXsmyLyLtf1NRHUsX
 7wIWV0Gz5RookxnVCGZdZMCWihRhSg==
 =sDCT
 -----END PGP SIGNATURE-----

Merge tag 'fs_for_v6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs

Pull quota and isofs updates from Jan Kara:
 "A few small cleanups in quota and isofs"

* tag 'fs_for_v6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
  isofs: Annotate struct SL_component with __counted_by()
  quota: remove unnecessary error code translation in dquot_quota_enable
  quota: remove redundant return at end of void function
  quota: remove unneeded return value of register_quota_format
  quota: avoid missing put_quota_format when DQUOT_SUSPENDED is passed
This commit is contained in:
Linus Torvalds 2024-09-23 10:49:28 -07:00
commit d0359e4ca0
7 changed files with 15 additions and 28 deletions

View File

@ -44,7 +44,7 @@ struct RR_PN_s {
struct SL_component { struct SL_component {
__u8 flags; __u8 flags;
__u8 len; __u8 len;
__u8 text[]; __u8 text[] __counted_by(len);
} __attribute__ ((packed)); } __attribute__ ((packed));
struct RR_SL_s { struct RR_SL_s {

View File

@ -1571,15 +1571,13 @@ static int __init ocfs2_init(void)
ocfs2_set_locking_protocol(); ocfs2_set_locking_protocol();
status = register_quota_format(&ocfs2_quota_format); register_quota_format(&ocfs2_quota_format);
if (status < 0)
goto out3;
status = register_filesystem(&ocfs2_fs_type); status = register_filesystem(&ocfs2_fs_type);
if (!status) if (!status)
return 0; return 0;
unregister_quota_format(&ocfs2_quota_format); unregister_quota_format(&ocfs2_quota_format);
out3:
debugfs_remove(ocfs2_debugfs_root); debugfs_remove(ocfs2_debugfs_root);
ocfs2_free_mem_caches(); ocfs2_free_mem_caches();
out2: out2:

View File

@ -163,13 +163,12 @@ static struct quota_module_name module_names[] = INIT_QUOTA_MODULE_NAMES;
/* SLAB cache for dquot structures */ /* SLAB cache for dquot structures */
static struct kmem_cache *dquot_cachep; static struct kmem_cache *dquot_cachep;
int register_quota_format(struct quota_format_type *fmt) void register_quota_format(struct quota_format_type *fmt)
{ {
spin_lock(&dq_list_lock); spin_lock(&dq_list_lock);
fmt->qf_next = quota_formats; fmt->qf_next = quota_formats;
quota_formats = fmt; quota_formats = fmt;
spin_unlock(&dq_list_lock); spin_unlock(&dq_list_lock);
return 0;
} }
EXPORT_SYMBOL(register_quota_format); EXPORT_SYMBOL(register_quota_format);
@ -1831,7 +1830,6 @@ void dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
spin_unlock(&inode->i_lock); spin_unlock(&inode->i_lock);
mark_all_dquot_dirty(dquots); mark_all_dquot_dirty(dquots);
srcu_read_unlock(&dquot_srcu, index); srcu_read_unlock(&dquot_srcu, index);
return;
} }
EXPORT_SYMBOL(dquot_claim_space_nodirty); EXPORT_SYMBOL(dquot_claim_space_nodirty);
@ -1873,7 +1871,6 @@ void dquot_reclaim_space_nodirty(struct inode *inode, qsize_t number)
spin_unlock(&inode->i_lock); spin_unlock(&inode->i_lock);
mark_all_dquot_dirty(dquots); mark_all_dquot_dirty(dquots);
srcu_read_unlock(&dquot_srcu, index); srcu_read_unlock(&dquot_srcu, index);
return;
} }
EXPORT_SYMBOL(dquot_reclaim_space_nodirty); EXPORT_SYMBOL(dquot_reclaim_space_nodirty);
@ -2406,7 +2403,7 @@ static int vfs_setup_quota_inode(struct inode *inode, int type)
int dquot_load_quota_sb(struct super_block *sb, int type, int format_id, int dquot_load_quota_sb(struct super_block *sb, int type, int format_id,
unsigned int flags) unsigned int flags)
{ {
struct quota_format_type *fmt = find_quota_format(format_id); struct quota_format_type *fmt;
struct quota_info *dqopt = sb_dqopt(sb); struct quota_info *dqopt = sb_dqopt(sb);
int error; int error;
@ -2416,6 +2413,7 @@ int dquot_load_quota_sb(struct super_block *sb, int type, int format_id,
if (WARN_ON_ONCE(flags & DQUOT_SUSPENDED)) if (WARN_ON_ONCE(flags & DQUOT_SUSPENDED))
return -EINVAL; return -EINVAL;
fmt = find_quota_format(format_id);
if (!fmt) if (!fmt)
return -ESRCH; return -ESRCH;
if (!sb->dq_op || !sb->s_qcop || if (!sb->dq_op || !sb->s_qcop ||
@ -2596,7 +2594,8 @@ static int dquot_quota_enable(struct super_block *sb, unsigned int flags)
goto out_err; goto out_err;
} }
if (sb_has_quota_limits_enabled(sb, type)) { if (sb_has_quota_limits_enabled(sb, type)) {
ret = -EBUSY; /* compatible with XFS */
ret = -EEXIST;
goto out_err; goto out_err;
} }
spin_lock(&dq_state_lock); spin_lock(&dq_state_lock);
@ -2610,9 +2609,6 @@ out_err:
if (flags & qtype_enforce_flag(type)) if (flags & qtype_enforce_flag(type))
dquot_disable(sb, type, DQUOT_LIMITS_ENABLED); dquot_disable(sb, type, DQUOT_LIMITS_ENABLED);
} }
/* Error code translation for better compatibility with XFS */
if (ret == -EBUSY)
ret = -EEXIST;
return ret; return ret;
} }

View File

@ -235,7 +235,8 @@ static struct quota_format_type v1_quota_format = {
static int __init init_v1_quota_format(void) static int __init init_v1_quota_format(void)
{ {
return register_quota_format(&v1_quota_format); register_quota_format(&v1_quota_format);
return 0;
} }
static void __exit exit_v1_quota_format(void) static void __exit exit_v1_quota_format(void)

View File

@ -440,12 +440,9 @@ static struct quota_format_type v2r1_quota_format = {
static int __init init_v2_quota_format(void) static int __init init_v2_quota_format(void)
{ {
int ret; register_quota_format(&v2r0_quota_format);
register_quota_format(&v2r1_quota_format);
ret = register_quota_format(&v2r0_quota_format); return 0;
if (ret)
return ret;
return register_quota_format(&v2r1_quota_format);
} }
static void __exit exit_v2_quota_format(void) static void __exit exit_v2_quota_format(void)

View File

@ -526,7 +526,7 @@ struct quota_info {
const struct quota_format_ops *ops[MAXQUOTAS]; /* Operations for each type */ const struct quota_format_ops *ops[MAXQUOTAS]; /* Operations for each type */
}; };
int register_quota_format(struct quota_format_type *fmt); void register_quota_format(struct quota_format_type *fmt);
void unregister_quota_format(struct quota_format_type *fmt); void unregister_quota_format(struct quota_format_type *fmt);
struct quota_module_name { struct quota_module_name {

View File

@ -4961,11 +4961,7 @@ void __init shmem_init(void)
shmem_init_inodecache(); shmem_init_inodecache();
#ifdef CONFIG_TMPFS_QUOTA #ifdef CONFIG_TMPFS_QUOTA
error = register_quota_format(&shmem_quota_format); register_quota_format(&shmem_quota_format);
if (error < 0) {
pr_err("Could not register quota format\n");
goto out3;
}
#endif #endif
error = register_filesystem(&shmem_fs_type); error = register_filesystem(&shmem_fs_type);
@ -5000,7 +4996,6 @@ out1:
out2: out2:
#ifdef CONFIG_TMPFS_QUOTA #ifdef CONFIG_TMPFS_QUOTA
unregister_quota_format(&shmem_quota_format); unregister_quota_format(&shmem_quota_format);
out3:
#endif #endif
shmem_destroy_inodecache(); shmem_destroy_inodecache();
shm_mnt = ERR_PTR(error); shm_mnt = ERR_PTR(error);