Commit fd6e6752 authored by Filipe Manana's avatar Filipe Manana Committed by Wen Zhiwei
Browse files

btrfs: update comment for struct btrfs_inode::lock

stable inclusion
from stable-v6.6.54
commit 971d03cd457a1c701bf4cc0d299f8a48d0f49037
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IAZ3K2

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=971d03cd457a1c701bf4cc0d299f8a48d0f49037



--------------------------------

[ Upstream commit 68539bd0e73b457f88a9d00cabb6533ec8582dc9 ]

Update the comment for the lock named "lock" in struct btrfs_inode because
it does not mention that the fields "delalloc_bytes", "defrag_bytes",
"csum_bytes", "outstanding_extents" and "disk_i_size" are also protected
by that lock.

Also add a comment on top of each field protected by this lock to mention
that the lock protects them.

Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
Stable-dep-of: 7ee85f5515e8 ("btrfs: fix race setting file private on concurrent lseek using same fd")
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Conflicts:
 fs/btrfs/btrfs_inode.h
Signed-off-by: default avatarWen Zhiwei <wenzhiwei@kylinos.cn>
parent c4f98fd6
Loading
Loading
Loading
Loading
+18 −14
Original line number Diff line number Diff line
@@ -82,8 +82,9 @@ struct btrfs_inode {
	/*
	 * Lock for counters and all fields used to determine if the inode is in
	 * the log or not (last_trans, last_sub_trans, last_log_commit,
	 * logged_trans), to access/update new_delalloc_bytes and to update the
	 * VFS' inode number of bytes used.
	 * logged_trans), to access/update delalloc_bytes, new_delalloc_bytes,
	 * defrag_bytes, disk_i_size, outstanding_extents, csum_bytes and to
	 * update the VFS' inode number of bytes used.
	 * Also protects setting struct file::private_data.
	 */
	spinlock_t lock;
@@ -107,7 +108,7 @@ struct btrfs_inode {
	 * Counters to keep track of the number of extent item's we may use due
	 * to delalloc and such.  outstanding_extents is the number of extent
	 * items we think we'll end up using, and reserved_extents is the number
	 * of extent items we've reserved metadata for.
	 * of extent items we've reserved metadata for. Protected by 'lock'.
	 */
	unsigned outstanding_extents;

@@ -131,28 +132,31 @@ struct btrfs_inode {
	u64 generation;

	/*
	 * transid of the trans_handle that last modified this inode
	 * ID of the transaction handle that last modified this inode.
	 * Protected by 'lock'.
	 */
	u64 last_trans;

	/*
	 * transid that last logged this inode
	 * ID of the transaction that last logged this inode.
	 * Protected by 'lock'.
	 */
	u64 logged_trans;

	/*
	 * log transid when this inode was last modified
	 * Log transaction ID when this inode was last modified.
	 * Protected by 'lock'.
	 */
	int last_sub_trans;

	/* a local copy of root's last_log_commit */
	/* A local copy of root's last_log_commit. Protected by 'lock'. */
	int last_log_commit;

	union {
		/*
		 * Total number of bytes pending delalloc, used by stat to
		 * calculate the real block usage of the file. This is used
		 * only for files.
		 * only for files. Protected by 'lock'.
		 */
		u64 delalloc_bytes;
		/*
@@ -170,7 +174,7 @@ struct btrfs_inode {
		 * Total number of bytes pending delalloc that fall within a file
		 * range that is either a hole or beyond EOF (and no prealloc extent
		 * exists in the range). This is always <= delalloc_bytes and this
		 * is used only for files.
		 * is used only for files. Protected by 'lock'.
		 */
		u64 new_delalloc_bytes;
		/*
@@ -181,15 +185,15 @@ struct btrfs_inode {
	};

	/*
	 * total number of bytes pending defrag, used by stat to check whether
	 * it needs COW.
	 * Total number of bytes pending defrag, used by stat to check whether
	 * it needs COW. Protected by 'lock'.
	 */
	u64 defrag_bytes;

	/*
	 * the size of the file stored in the metadata on disk.  data=ordered
	 * The size of the file stored in the metadata on disk.  data=ordered
	 * means the in-memory i_size might be larger than the size on disk
	 * because not all the blocks are written yet.
	 * because not all the blocks are written yet. Protected by 'lock'.
	 */
	u64 disk_i_size;

@@ -223,7 +227,7 @@ struct btrfs_inode {

	/*
	 * Number of bytes outstanding that are going to need csums.  This is
	 * used in ENOSPC accounting.
	 * used in ENOSPC accounting. Protected by 'lock'.
	 */
	u64 csum_bytes;