diff options
| -rw-r--r-- | Documentation/filesystems/quota.rst | 12 | ||||
| -rw-r--r-- | Documentation/filesystems/udf.rst | 2 | ||||
| -rw-r--r-- | fs/ext2/dir.c | 55 | ||||
| -rw-r--r-- | fs/ext2/ext2.h | 8 | ||||
| -rw-r--r-- | fs/ext2/ialloc.c | 3 | ||||
| -rw-r--r-- | fs/ext2/inode.c | 7 | ||||
| -rw-r--r-- | fs/ext2/namei.c | 39 | ||||
| -rw-r--r-- | fs/ext2/super.c | 10 | ||||
| -rw-r--r-- | fs/ext2/xattr.c | 6 | ||||
| -rw-r--r-- | fs/quota/Kconfig | 2 | ||||
| -rw-r--r-- | fs/reiserfs/dir.c | 8 | ||||
| -rw-r--r-- | fs/reiserfs/fix_node.c | 4 | ||||
| -rw-r--r-- | fs/reiserfs/journal.c | 2 | ||||
| -rw-r--r-- | fs/reiserfs/reiserfs.h | 2 | ||||
| -rw-r--r-- | fs/reiserfs/xattr_acl.c | 2 | ||||
| -rw-r--r-- | fs/udf/ecma_167.h | 2 | ||||
| -rw-r--r-- | fs/udf/osta_udf.h | 2 | ||||
| -rw-r--r-- | fs/udf/super.c | 4 | 
18 files changed, 86 insertions, 84 deletions
| diff --git a/Documentation/filesystems/quota.rst b/Documentation/filesystems/quota.rst index a30cdd47c652..abd4303c546e 100644 --- a/Documentation/filesystems/quota.rst +++ b/Documentation/filesystems/quota.rst @@ -18,7 +18,7 @@ Quota limits (and amount of grace time) are set independently for each  filesystem.  For more details about quota design, see the documentation in quota-tools package -(http://sourceforge.net/projects/linuxquota). +(https://sourceforge.net/projects/linuxquota).  Quota netlink interface  ======================= @@ -31,11 +31,11 @@ the above events to userspace. There they can be captured by an application  and processed accordingly.  The interface uses generic netlink framework (see -http://lwn.net/Articles/208755/ and http://people.suug.ch/~tgr/libnl/ for more -details about this layer). The name of the quota generic netlink interface -is "VFS_DQUOT". Definitions of constants below are in <linux/quota.h>. -Since the quota netlink protocol is not namespace aware, quota netlink messages -are sent only in initial network namespace. +https://lwn.net/Articles/208755/ and http://www.infradead.org/~tgr/libnl/ for +more details about this layer). The name of the quota generic netlink interface +is "VFS_DQUOT". Definitions of constants below are in <linux/quota.h>.  Since +the quota netlink protocol is not namespace aware, quota netlink messages are +sent only in initial network namespace.  Currently, the interface supports only one message type QUOTA_NL_C_WARNING.  This command is used to send a notification about any of the above mentioned diff --git a/Documentation/filesystems/udf.rst b/Documentation/filesystems/udf.rst index d9badbf285b2..f9489ddbb767 100644 --- a/Documentation/filesystems/udf.rst +++ b/Documentation/filesystems/udf.rst @@ -72,4 +72,4 @@ For the latest version and toolset see:  Documentation on UDF and ECMA 167 is available FREE from:  	- http://www.osta.org/ -	- http://www.ecma-international.org/ +	- https://www.ecma-international.org/ diff --git a/fs/ext2/dir.c b/fs/ext2/dir.c index 13318e255ebf..70355ab6740e 100644 --- a/fs/ext2/dir.c +++ b/fs/ext2/dir.c @@ -348,7 +348,6 @@ struct ext2_dir_entry_2 *ext2_find_entry (struct inode *dir,  	struct page *page = NULL;  	struct ext2_inode_info *ei = EXT2_I(dir);  	ext2_dirent * de; -	int dir_has_error = 0;  	if (npages == 0)  		goto out; @@ -362,25 +361,25 @@ struct ext2_dir_entry_2 *ext2_find_entry (struct inode *dir,  	n = start;  	do {  		char *kaddr; -		page = ext2_get_page(dir, n, dir_has_error); -		if (!IS_ERR(page)) { -			kaddr = page_address(page); -			de = (ext2_dirent *) kaddr; -			kaddr += ext2_last_byte(dir, n) - reclen; -			while ((char *) de <= kaddr) { -				if (de->rec_len == 0) { -					ext2_error(dir->i_sb, __func__, -						"zero-length directory entry"); -					ext2_put_page(page); -					goto out; -				} -				if (ext2_match (namelen, name, de)) -					goto found; -				de = ext2_next_entry(de); +		page = ext2_get_page(dir, n, 0); +		if (IS_ERR(page)) +			return ERR_CAST(page); + +		kaddr = page_address(page); +		de = (ext2_dirent *) kaddr; +		kaddr += ext2_last_byte(dir, n) - reclen; +		while ((char *) de <= kaddr) { +			if (de->rec_len == 0) { +				ext2_error(dir->i_sb, __func__, +					"zero-length directory entry"); +				ext2_put_page(page); +				goto out;  			} -			ext2_put_page(page); -		} else -			dir_has_error = 1; +			if (ext2_match(namelen, name, de)) +				goto found; +			de = ext2_next_entry(de); +		} +		ext2_put_page(page);  		if (++n >= npages)  			n = 0; @@ -394,7 +393,7 @@ struct ext2_dir_entry_2 *ext2_find_entry (struct inode *dir,  		}  	} while (n != start);  out: -	return NULL; +	return ERR_PTR(-ENOENT);  found:  	*res_page = page; @@ -414,18 +413,18 @@ struct ext2_dir_entry_2 * ext2_dotdot (struct inode *dir, struct page **p)  	return de;  } -ino_t ext2_inode_by_name(struct inode *dir, const struct qstr *child) +int ext2_inode_by_name(struct inode *dir, const struct qstr *child, ino_t *ino)  { -	ino_t res = 0;  	struct ext2_dir_entry_2 *de;  	struct page *page; -	de = ext2_find_entry (dir, child, &page); -	if (de) { -		res = le32_to_cpu(de->inode); -		ext2_put_page(page); -	} -	return res; +	de = ext2_find_entry(dir, child, &page); +	if (IS_ERR(de)) +		return PTR_ERR(de); + +	*ino = le32_to_cpu(de->inode); +	ext2_put_page(page); +	return 0;  }  static int ext2_prepare_chunk(struct page *page, loff_t pos, unsigned len) diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h index 8178bd38a9d6..5136b7289e8d 100644 --- a/fs/ext2/ext2.h +++ b/fs/ext2/ext2.h @@ -52,8 +52,8 @@ struct ext2_block_alloc_info {  	/*  	 * Was i_next_alloc_goal in ext2_inode_info  	 * is the *physical* companion to i_next_alloc_block. -	 * it the the physical block number of the block which was most-recentl -	 * allocated to this file.  This give us the goal (target) for the next +	 * it is the physical block number of the block which was most-recently +	 * allocated to this file.  This gives us the goal (target) for the next  	 * allocation when we detect linearly ascending requests.  	 */  	ext2_fsblk_t		last_alloc_physical_block; @@ -374,7 +374,6 @@ struct ext2_inode {  /*   * Mount flags   */ -#define EXT2_MOUNT_CHECK		0x000001  /* Do mount-time checks */  #define EXT2_MOUNT_OLDALLOC		0x000002  /* Don't use the new Orlov allocator */  #define EXT2_MOUNT_GRPID		0x000004  /* Create files with directory's group */  #define EXT2_MOUNT_DEBUG		0x000008  /* Some debugging messages */ @@ -738,7 +737,8 @@ extern void ext2_rsv_window_add(struct super_block *sb, struct ext2_reserve_wind  /* dir.c */  extern int ext2_add_link (struct dentry *, struct inode *); -extern ino_t ext2_inode_by_name(struct inode *, const struct qstr *); +extern int ext2_inode_by_name(struct inode *dir, +			      const struct qstr *child, ino_t *ino);  extern int ext2_make_empty(struct inode *, struct inode *);  extern struct ext2_dir_entry_2 * ext2_find_entry (struct inode *,const struct qstr *, struct page **);  extern int ext2_delete_entry (struct ext2_dir_entry_2 *, struct page *); diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c index fda7d3f5b4be..432c3febea6d 100644 --- a/fs/ext2/ialloc.c +++ b/fs/ext2/ialloc.c @@ -80,6 +80,7 @@ static void ext2_release_inode(struct super_block *sb, int group, int dir)  	if (dir)  		le16_add_cpu(&desc->bg_used_dirs_count, -1);  	spin_unlock(sb_bgl_lock(EXT2_SB(sb), group)); +	percpu_counter_inc(&EXT2_SB(sb)->s_freeinodes_counter);  	if (dir)  		percpu_counter_dec(&EXT2_SB(sb)->s_dirs_counter);  	mark_buffer_dirty(bh); @@ -528,7 +529,7 @@ got:  		goto fail;  	} -	percpu_counter_add(&sbi->s_freeinodes_counter, -1); +	percpu_counter_dec(&sbi->s_freeinodes_counter);  	if (S_ISDIR(mode))  		percpu_counter_inc(&sbi->s_dirs_counter); diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c index c8b371c82b4f..80662e1f7889 100644 --- a/fs/ext2/inode.c +++ b/fs/ext2/inode.c @@ -356,8 +356,7 @@ static inline ext2_fsblk_t ext2_find_goal(struct inode *inode, long block,   *	@blks: number of data blocks to be mapped.   *	@blocks_to_boundary:  the offset in the indirect block   * - *	return the total number of blocks to be allocate, including the - *	direct and indirect blocks. + *	return the number of direct blocks to allocate.   */  static int  ext2_blks_to_allocate(Indirect * branch, int k, unsigned long blks, @@ -390,11 +389,9 @@ ext2_blks_to_allocate(Indirect * branch, int k, unsigned long blks,   *	ext2_alloc_blocks: multiple allocate blocks needed for a branch   *	@indirect_blks: the number of blocks need to allocate for indirect   *			blocks - * + *	@blks: the number of blocks need to allocate for direct blocks   *	@new_blocks: on return it will store the new block numbers for   *	the indirect blocks(if needed) and the first direct block, - *	@blks:	on return it will store the total number of allocated - *		direct blocks   */  static int ext2_alloc_blocks(struct inode *inode,  			ext2_fsblk_t goal, int indirect_blks, int blks, diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c index ba3e3e075891..5bf2c145643b 100644 --- a/fs/ext2/namei.c +++ b/fs/ext2/namei.c @@ -57,13 +57,17 @@ static struct dentry *ext2_lookup(struct inode * dir, struct dentry *dentry, uns  {  	struct inode * inode;  	ino_t ino; +	int res;  	if (dentry->d_name.len > EXT2_NAME_LEN)  		return ERR_PTR(-ENAMETOOLONG); -	ino = ext2_inode_by_name(dir, &dentry->d_name); -	inode = NULL; -	if (ino) { +	res = ext2_inode_by_name(dir, &dentry->d_name, &ino); +	if (res) { +		if (res != -ENOENT) +			return ERR_PTR(res); +		inode = NULL; +	} else {  		inode = ext2_iget(dir->i_sb, ino);  		if (inode == ERR_PTR(-ESTALE)) {  			ext2_error(dir->i_sb, __func__, @@ -78,9 +82,13 @@ static struct dentry *ext2_lookup(struct inode * dir, struct dentry *dentry, uns  struct dentry *ext2_get_parent(struct dentry *child)  {  	struct qstr dotdot = QSTR_INIT("..", 2); -	unsigned long ino = ext2_inode_by_name(d_inode(child), &dotdot); -	if (!ino) -		return ERR_PTR(-ENOENT); +	ino_t ino; +	int res; + +	res = ext2_inode_by_name(d_inode(child), &dotdot, &ino); +	if (res) +		return ERR_PTR(res); +  	return d_obtain_alias(ext2_iget(child->d_sb, ino));  }  @@ -274,9 +282,9 @@ static int ext2_unlink(struct inode * dir, struct dentry *dentry)  	if (err)  		goto out; -	de = ext2_find_entry (dir, &dentry->d_name, &page); -	if (!de) { -		err = -ENOENT; +	de = ext2_find_entry(dir, &dentry->d_name, &page); +	if (IS_ERR(de)) { +		err = PTR_ERR(de);  		goto out;  	} @@ -330,9 +338,9 @@ static int ext2_rename (struct inode * old_dir, struct dentry * old_dentry,  	if (err)  		goto out; -	old_de = ext2_find_entry (old_dir, &old_dentry->d_name, &old_page); -	if (!old_de) { -		err = -ENOENT; +	old_de = ext2_find_entry(old_dir, &old_dentry->d_name, &old_page); +	if (IS_ERR(old_de)) { +		err = PTR_ERR(old_de);  		goto out;  	} @@ -351,10 +359,11 @@ static int ext2_rename (struct inode * old_dir, struct dentry * old_dentry,  		if (dir_de && !ext2_empty_dir (new_inode))  			goto out_dir; -		err = -ENOENT; -		new_de = ext2_find_entry (new_dir, &new_dentry->d_name, &new_page); -		if (!new_de) +		new_de = ext2_find_entry(new_dir, &new_dentry->d_name, &new_page); +		if (IS_ERR(new_de)) { +			err = PTR_ERR(new_de);  			goto out_dir; +		}  		ext2_set_link(new_dir, new_de, new_page, old_inode, 1);  		new_inode->i_ctime = current_time(new_inode);  		if (dir_de) diff --git a/fs/ext2/super.c b/fs/ext2/super.c index 4a4ab683250d..dda860562ca3 100644 --- a/fs/ext2/super.c +++ b/fs/ext2/super.c @@ -431,7 +431,7 @@ static unsigned long get_sb_block(void **data)  enum {  	Opt_bsd_df, Opt_minix_df, Opt_grpid, Opt_nogrpid,  	Opt_resgid, Opt_resuid, Opt_sb, Opt_err_cont, Opt_err_panic, -	Opt_err_ro, Opt_nouid32, Opt_nocheck, Opt_debug, +	Opt_err_ro, Opt_nouid32, Opt_debug,  	Opt_oldalloc, Opt_orlov, Opt_nobh, Opt_user_xattr, Opt_nouser_xattr,  	Opt_acl, Opt_noacl, Opt_xip, Opt_dax, Opt_ignore, Opt_err, Opt_quota,  	Opt_usrquota, Opt_grpquota, Opt_reservation, Opt_noreservation @@ -451,8 +451,6 @@ static const match_table_t tokens = {  	{Opt_err_panic, "errors=panic"},  	{Opt_err_ro, "errors=remount-ro"},  	{Opt_nouid32, "nouid32"}, -	{Opt_nocheck, "check=none"}, -	{Opt_nocheck, "nocheck"},  	{Opt_debug, "debug"},  	{Opt_oldalloc, "oldalloc"},  	{Opt_orlov, "orlov"}, @@ -546,12 +544,6 @@ static int parse_options(char *options, struct super_block *sb,  		case Opt_nouid32:  			set_opt (opts->s_mount_opt, NO_UID32);  			break; -		case Opt_nocheck: -			ext2_msg(sb, KERN_WARNING, -				"Option nocheck/check=none is deprecated and" -				" will be removed in June 2020."); -			clear_opt (opts->s_mount_opt, CHECK); -			break;  		case Opt_debug:  			set_opt (opts->s_mount_opt, DEBUG);  			break; diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c index 943cc469f42f..841fa6d9d744 100644 --- a/fs/ext2/xattr.c +++ b/fs/ext2/xattr.c @@ -437,6 +437,9 @@ ext2_xattr_set(struct inode *inode, int name_index, const char *name,  	name_len = strlen(name);  	if (name_len > 255 || value_len > sb->s_blocksize)  		return -ERANGE; +	error = dquot_initialize(inode); +	if (error) +		return error;  	down_write(&EXT2_I(inode)->xattr_sem);  	if (EXT2_I(inode)->i_file_acl) {  		/* The inode already has an extended attribute block. */ @@ -588,7 +591,6 @@ bad_block:  			/* Remove the old value. */  			memmove(first_val + size, first_val, val - first_val);  			memset(first_val, 0, size); -			here->e_value_offs = 0;  			min_offs += size;  			/* Adjust all value offsets. */ @@ -600,6 +602,8 @@ bad_block:  						cpu_to_le16(o + size);  				last = EXT2_XATTR_NEXT(last);  			} + +			here->e_value_offs = 0;  		}  		if (value == NULL) {  			/* Remove the old name. */ diff --git a/fs/quota/Kconfig b/fs/quota/Kconfig index 7218314ca13f..d1ceb76adb71 100644 --- a/fs/quota/Kconfig +++ b/fs/quota/Kconfig @@ -15,7 +15,7 @@ config QUOTA  	  Ext3, ext4 and reiserfs also support journaled quotas for which  	  you don't need to run quotacheck(8) after an unclean shutdown.  	  For further details, read the Quota mini-HOWTO, available from -	  <http://www.tldp.org/docs.html#howto>, or the documentation provided +	  <https://www.tldp.org/docs.html#howto>, or the documentation provided  	  with the quota tools. Probably the quota support is only useful for  	  multi user systems. If unsure, say N. diff --git a/fs/reiserfs/dir.c b/fs/reiserfs/dir.c index 5b50689d8539..79ee2b436685 100644 --- a/fs/reiserfs/dir.c +++ b/fs/reiserfs/dir.c @@ -289,7 +289,7 @@ void make_empty_dir_item_v1(char *body, __le32 dirid, __le32 objid,  	/* direntry header of "." */  	put_deh_offset(dot, DOT_OFFSET); -	/* these two are from make_le_item_head, and are are LE */ +	/* these two are from make_le_item_head, and are LE */  	dot->deh_dir_id = dirid;  	dot->deh_objectid = objid;  	dot->deh_state = 0;	/* Endian safe if 0 */ @@ -299,7 +299,7 @@ void make_empty_dir_item_v1(char *body, __le32 dirid, __le32 objid,  	/* direntry header of ".." */  	put_deh_offset(dotdot, DOT_DOT_OFFSET);  	/* key of ".." for the root directory */ -	/* these two are from the inode, and are are LE */ +	/* these two are from the inode, and are LE */  	dotdot->deh_dir_id = par_dirid;  	dotdot->deh_objectid = par_objid;  	dotdot->deh_state = 0;	/* Endian safe if 0 */ @@ -323,7 +323,7 @@ void make_empty_dir_item(char *body, __le32 dirid, __le32 objid,  	/* direntry header of "." */  	put_deh_offset(dot, DOT_OFFSET); -	/* these two are from make_le_item_head, and are are LE */ +	/* these two are from make_le_item_head, and are LE */  	dot->deh_dir_id = dirid;  	dot->deh_objectid = objid;  	dot->deh_state = 0;	/* Endian safe if 0 */ @@ -333,7 +333,7 @@ void make_empty_dir_item(char *body, __le32 dirid, __le32 objid,  	/* direntry header of ".." */  	put_deh_offset(dotdot, DOT_DOT_OFFSET);  	/* key of ".." for the root directory */ -	/* these two are from the inode, and are are LE */ +	/* these two are from the inode, and are LE */  	dotdot->deh_dir_id = par_dirid;  	dotdot->deh_objectid = par_objid;  	dotdot->deh_state = 0;	/* Endian safe if 0 */ diff --git a/fs/reiserfs/fix_node.c b/fs/reiserfs/fix_node.c index 117092224111..fefe87e1c099 100644 --- a/fs/reiserfs/fix_node.c +++ b/fs/reiserfs/fix_node.c @@ -611,9 +611,9 @@ static int get_num_ver(int mode, struct tree_balance *tb, int h,   *	blk_num	number of blocks that S[h] will be splitted into;   *	s012	number of items that fall into splitted nodes.   *	lbytes	number of bytes which flow to the left neighbor from the - *              item that is not not shifted entirely + *              item that is not shifted entirely   *	rbytes	number of bytes which flow to the right neighbor from the - *              item that is not not shifted entirely + *              item that is not shifted entirely   *	s1bytes	number of bytes which flow to the first  new node when   *              S[0] splits (this number is contained in s012 array)   */ diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c index 5c766330e493..e98f99338f8f 100644 --- a/fs/reiserfs/journal.c +++ b/fs/reiserfs/journal.c @@ -32,7 +32,7 @@   *                      to disk for all backgrounded commits that have been   *                      around too long.   *		     -- Note, if you call this as an immediate flush from - *		        from within kupdate, it will ignore the immediate flag + *		        within kupdate, it will ignore the immediate flag   */  #include <linux/time.h> diff --git a/fs/reiserfs/reiserfs.h b/fs/reiserfs/reiserfs.h index 726580114d55..f69871516167 100644 --- a/fs/reiserfs/reiserfs.h +++ b/fs/reiserfs/reiserfs.h @@ -1109,7 +1109,7 @@ int is_reiserfs_jr(struct reiserfs_super_block *rs);   * ReiserFS leaves the first 64k unused, so that partition labels have   * enough space.  If someone wants to write a fancy bootloader that   * needs more than 64k, let us know, and this will be increased in size. - * This number must be larger than than the largest block size on any + * This number must be larger than the largest block size on any   * platform, or code will break.  -Hans   */  #define REISERFS_DISK_OFFSET_IN_BYTES (64 * 1024) diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c index 05f666794561..ccd40df6eb45 100644 --- a/fs/reiserfs/xattr_acl.c +++ b/fs/reiserfs/xattr_acl.c @@ -373,7 +373,7 @@ int reiserfs_cache_default_acl(struct inode *inode)  		/* Other xattrs can be created during inode creation. We don't  		 * want to claim too many blocks, so we check to see if we -		 * we need to create the tree to the xattrs, and then we +		 * need to create the tree to the xattrs, and then we  		 * just want two files. */  		nblocks = reiserfs_xattr_jcreate_nblocks(inode);  		nblocks += JOURNAL_BLOCKS_PER_OBJECT(inode->i_sb); diff --git a/fs/udf/ecma_167.h b/fs/udf/ecma_167.h index 736ebc5dc441..185c3e247648 100644 --- a/fs/udf/ecma_167.h +++ b/fs/udf/ecma_167.h @@ -2,7 +2,7 @@   * ecma_167.h   *   * This file is based on ECMA-167 3rd edition (June 1997) - * http://www.ecma.ch + * https://www.ecma.ch   *   * Copyright (c) 2001-2002  Ben Fennema   * Copyright (c) 2017-2019  Pali Rohár <pali@kernel.org> diff --git a/fs/udf/osta_udf.h b/fs/udf/osta_udf.h index d5fbfab3ddb6..22bc4fb2feb9 100644 --- a/fs/udf/osta_udf.h +++ b/fs/udf/osta_udf.h @@ -226,7 +226,7 @@ struct sparingTable {  #define ICBTAG_FILE_TYPE_MIRROR		0xFB  #define ICBTAG_FILE_TYPE_BITMAP		0xFC -/* struct struct long_ad ICB - ADImpUse (UDF 2.60 2.2.4.3) */ +/* struct long_ad ICB - ADImpUse (UDF 2.60 2.2.4.3) */  struct allocDescImpUse {  	__le16		flags;  	uint8_t		impUse[4]; diff --git a/fs/udf/super.c b/fs/udf/super.c index f747bf72edbe..1c42f544096d 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c @@ -11,8 +11,8 @@   *  This code is based on version 2.00 of the UDF specification,   *  and revision 3 of the ECMA 167 standard [equivalent to ISO 13346].   *    http://www.osta.org/ - *    http://www.ecma.ch/ - *    http://www.iso.org/ + *    https://www.ecma.ch/ + *    https://www.iso.org/   *   * COPYRIGHT   *  This file is distributed under the terms of the GNU General Public | 
