public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Allison Henderson <allison.henderson@oracle.com>
To: "Darrick J. Wong" <djwong@kernel.org>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH v19 00/14] Delay Ready Attributes
Date: Thu, 27 May 2021 09:54:49 -0700	[thread overview]
Message-ID: <67088fde-e95d-22ce-e4ef-b868500d7aee@oracle.com> (raw)
In-Reply-To: <20210526181933.GA202121@locust>



On 5/26/21 11:19 AM, Darrick J. Wong wrote:
> On Tue, May 25, 2021 at 12:54:50PM -0700, Allison Henderson wrote:
>> Hi all,
>>
>> This set is a subset of a larger series for Dealyed Attributes. Which is a
>> subset of a yet larger series for parent pointers. Delayed attributes allow
>> attribute operations (set and remove) to be logged and committed in the same
>> way that other delayed operations do. This allows more complex operations (like
>> parent pointers) to be broken up into multiple smaller transactions. To do
>> this, the existing attr operations must be modified to operate as a delayed
>> operation.  This means that they cannot roll, commit, or finish transactions.
>> Instead, they return -EAGAIN to allow the calling function to handle the
>> transaction.  In this series, we focus on only the delayed attribute portion.
>> We will introduce parent pointers in a later set.
> 
> Somewhere in here, this introduced a regression that I can reproduce
> pretty easily when running:
> 
> # FSTYP=xfs ./check -overlay generic/020
Ok, I am able to reproduce with the same command.  Should be reguarly 
testing with these parameters?  Usually I just run ./check -g attr

> 
> [ 1093.136172] XFS: Assertion failed: args->rmtblkno == 0, file: fs/xfs/libxfs/xfs_attr.c, line: 1434
> [ 1093.139776] ------------[ cut here ]------------
> [ 1093.141590] WARNING: CPU: 3 PID: 12697 at fs/xfs/xfs_message.c:112 assfail+0x3c/0x40 [xfs]
> [ 1093.144841] Modules linked in: xfs libcrc32c ip6t_REJECT nf_reject_ipv6 ipt_REJECT nf_reject_ipv4 xt_tcpudp ip_set_hash_ip ip_set_hash_net xt_set ip_set_hash_mac ip_set nfnetlink bfq ip6table_filter ip6_tables iptable_filter pvpanic_mmio pvpanic sch_fq_codel ip_tables x_tables overlay nfsv4 af_packet [last unloaded: xfs]
> [ 1093.153636] CPU: 3 PID: 12697 Comm: attr Tainted: G        W         5.13.0-rc2-djwx #rc2
> [ 1093.156094] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-1ubuntu1.1 04/01/2014
> [ 1093.158530] RIP: 0010:assfail+0x3c/0x40 [xfs]
> [ 1093.159987] Code: 48 a2 3f a0 e8 81 f9 ff ff 8a 1d 7b e9 0b 00 80 fb 01 76 0f 0f b6 f3 48 c7 c7 a0 57 49 a0 e8 db c9 00 e1 80 e3 01 74 02 0f 0b <0f> 0b 5b c3 48 8d 45 10 48 89 e2 4c 89 e6 48 89 1c 24 48 89 44 24
> [ 1093.164680] RSP: 0018:ffffc90001a0fa90 EFLAGS: 00010246
> [ 1093.166021] RAX: 0000000000000000 RBX: ffffc90001a0fa00 RCX: 0000000000000000
> [ 1093.167761] RDX: 00000000ffffffc0 RSI: 0000000000000000 RDI: ffffffffa03ea6d5
> [ 1093.169461] RBP: ffff88804b6c4d20 R08: 0000000000000000 R09: 000000000000000a
> [ 1093.171095] R10: 000000000000000a R11: f000000000000000 R12: 0000000000000000
> [ 1093.172687] R13: ffffc90001a0fb70 R14: ffff88800abe4c00 R15: 0000000000000000
> [ 1093.174267] FS:  00007f8c3494f740(0000) GS:ffff88807e100000(0000) knlGS:0000000000000000
> [ 1093.176031] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 1093.177250] CR2: 00007f8c34a57710 CR3: 000000004b455005 CR4: 00000000001706a0
> [ 1093.178759] Call Trace:
> [ 1093.179328]  xfs_attr_remove_iter+0x25d/0x270 [xfs]
> [ 1093.180387]  xfs_attr_set+0x2ff/0x430 [xfs]
> [ 1093.181340]  xfs_xattr_set+0x89/0xd0 [xfs]
> [ 1093.182269]  __vfs_removexattr+0x52/0x70
> [ 1093.183062]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.183957]  vfs_removexattr+0x56/0x100
> [ 1093.184729]  ovl_xattr_set+0x131/0x1d0 [overlay]
> [ 1093.185654]  __vfs_removexattr+0x52/0x70
> [ 1093.186419]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.187300]  vfs_removexattr+0x56/0x100
> [ 1093.188028]  removexattr+0x58/0x90
> [ 1093.188672]  ? __check_object_size+0xc8/0x280
> [ 1093.189513]  ? strncpy_from_user+0x47/0x180
> [ 1093.190302]  ? preempt_count_add+0x50/0xa0
> [ 1093.191119]  ? __mnt_want_write+0x65/0x90
> [ 1093.191867]  path_removexattr+0x9e/0xc0
> [ 1093.192584]  __x64_sys_lremovexattr+0x14/0x20
> [ 1093.193395]  do_syscall_64+0x3a/0x70
> [ 1093.194067]  entry_SYSCALL_64_after_hwframe+0x44/0xae
> [ 1093.195017] RIP: 0033:0x7f8c34a7207b
> [ 1093.195713] Code: 73 01 c3 48 8b 0d 15 ae 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 c6 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d e5 ad 0c 00 f7 d8 64 89 01 48
> [ 1093.199072] RSP: 002b:00007ffc9f3248f8 EFLAGS: 00000202 ORIG_RAX: 00000000000000c6
> [ 1093.200454] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f8c34a7207b
> [ 1093.201776] RDX: 0000000000000072 RSI: 00007ffc9f324910 RDI: 00007ffc9f3261a0
> [ 1093.203121] RBP: 00007ffc9f326196 R08: 0000000000000000 R09: 00007ffc9f324910
> [ 1093.204441] R10: 00007f8c34b3dbe0 R11: 0000000000000202 R12: 00007ffc9f3261a0
> [ 1093.205754] R13: 00007ffc9f324910 R14: 0000000000000000 R15: 0000000000000001
> [ 1093.207095] ---[ end trace d5f6b816d902441c ]---
> [ 1093.208039] XFS: Assertion failed: bp->b_transp == tp, file: fs/xfs/xfs_trans_buf.c, line: 450
> [ 1093.209609] ------------[ cut here ]------------
> [ 1093.210483] WARNING: CPU: 3 PID: 12697 at fs/xfs/xfs_message.c:112 assfail+0x3c/0x40 [xfs]
> [ 1093.212095] Modules linked in: xfs libcrc32c ip6t_REJECT nf_reject_ipv6 ipt_REJECT nf_reject_ipv4 xt_tcpudp ip_set_hash_ip ip_set_hash_net xt_set ip_set_hash_mac ip_set nfnetlink bfq ip6table_filter ip6_tables iptable_filter pvpanic_mmio pvpanic sch_fq_codel ip_tables x_tables overlay nfsv4 af_packet [last unloaded: xfs]
> [ 1093.217174] CPU: 3 PID: 12697 Comm: attr Tainted: G        W         5.13.0-rc2-djwx #rc2
> [ 1093.218658] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-1ubuntu1.1 04/01/2014
> [ 1093.220280] RIP: 0010:assfail+0x3c/0x40 [xfs]
> [ 1093.221204] Code: 48 a2 3f a0 e8 81 f9 ff ff 8a 1d 7b e9 0b 00 80 fb 01 76 0f 0f b6 f3 48 c7 c7 a0 57 49 a0 e8 db c9 00 e1 80 e3 01 74 02 0f 0b <0f> 0b 5b c3 48 8d 45 10 48 89 e2 4c 89 e6 48 89 1c 24 48 89 44 24
> [ 1093.224534] RSP: 0018:ffffc90001a0f988 EFLAGS: 00010246
> [ 1093.225502] RAX: 0000000000000000 RBX: ffff88804e004700 RCX: 0000000000000000
> [ 1093.226823] RDX: 00000000ffffffc0 RSI: 0000000000000000 RDI: ffffffffa03ea6d5
> [ 1093.228106] RBP: ffff88804e9fee00 R08: 0000000000000000 R09: 000000000000000a
> [ 1093.228952] R10: 000000000000000a R11: f000000000000000 R12: ffff888042f11740
> [ 1093.229726] R13: 0000000000000fdc R14: ffff888042f11740 R15: ffff88804e004738
> [ 1093.230500] FS:  00007f8c3494f740(0000) GS:ffff88807e100000(0000) knlGS:0000000000000000
> [ 1093.231391] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 1093.232033] CR2: 00007f8c34a57710 CR3: 000000004b455005 CR4: 00000000001706a0
> [ 1093.232811] Call Trace:
> [ 1093.233115]  xfs_trans_dirty_buf+0xbe/0x120 [xfs]
> [ 1093.233742]  xfs_trans_log_buf+0x4c/0x100 [xfs]
> [ 1093.234349]  xfs_attr3_leaf_remove+0x2b5/0xc30 [xfs]
> [ 1093.235001]  ? xfs_trans_add_item+0x6b/0x180 [xfs]
> [ 1093.235628]  xfs_attr_node_removename+0x3d/0x90 [xfs]
> [ 1093.236273]  xfs_attr_remove_iter+0x50/0x270 [xfs]
> [ 1093.236891]  xfs_attr_set+0x2ff/0x430 [xfs]
> [ 1093.237445]  xfs_xattr_set+0x89/0xd0 [xfs]
> [ 1093.238010]  __vfs_removexattr+0x52/0x70
> [ 1093.238460]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.239009]  vfs_removexattr+0x56/0x100
> [ 1093.239452]  ovl_xattr_set+0x131/0x1d0 [overlay]
> [ 1093.239979]  __vfs_removexattr+0x52/0x70
> [ 1093.240430]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.240949]  vfs_removexattr+0x56/0x100
> [ 1093.241389]  removexattr+0x58/0x90
> [ 1093.241786]  ? __check_object_size+0xc8/0x280
> [ 1093.242286]  ? strncpy_from_user+0x47/0x180
> [ 1093.242780]  ? preempt_count_add+0x50/0xa0
> [ 1093.243252]  ? __mnt_want_write+0x65/0x90
> [ 1093.243708]  path_removexattr+0x9e/0xc0
> [ 1093.244153]  __x64_sys_lremovexattr+0x14/0x20
> [ 1093.244647]  do_syscall_64+0x3a/0x70
> [ 1093.245064]  entry_SYSCALL_64_after_hwframe+0x44/0xae
> [ 1093.245630] RIP: 0033:0x7f8c34a7207b
> [ 1093.246047] Code: 73 01 c3 48 8b 0d 15 ae 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 c6 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d e5 ad 0c 00 f7 d8 64 89 01 48
> [ 1093.248025] RSP: 002b:00007ffc9f3248f8 EFLAGS: 00000202 ORIG_RAX: 00000000000000c6
> [ 1093.248843] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f8c34a7207b
> [ 1093.249621] RDX: 0000000000000072 RSI: 00007ffc9f324910 RDI: 00007ffc9f3261a0
> [ 1093.250395] RBP: 00007ffc9f326196 R08: 0000000000000000 R09: 00007ffc9f324910
> [ 1093.251191] R10: 00007f8c34b3dbe0 R11: 0000000000000202 R12: 00007ffc9f3261a0
> [ 1093.251976] R13: 00007ffc9f324910 R14: 0000000000000000 R15: 0000000000000001
> [ 1093.252753] ---[ end trace d5f6b816d902441d ]---
> [ 1093.253282] XFS: Assertion failed: bp->b_transp == tp, file: fs/xfs/xfs_trans_buf.c, line: 450
> [ 1093.254223] ------------[ cut here ]------------
> [ 1093.254758] WARNING: CPU: 3 PID: 12697 at fs/xfs/xfs_message.c:112 assfail+0x3c/0x40 [xfs]
> [ 1093.255762] Modules linked in: xfs libcrc32c ip6t_REJECT nf_reject_ipv6 ipt_REJECT nf_reject_ipv4 xt_tcpudp ip_set_hash_ip ip_set_hash_net xt_set ip_set_hash_mac ip_set nfnetlink bfq ip6table_filter ip6_tables iptable_filter pvpanic_mmio pvpanic sch_fq_codel ip_tables x_tables overlay nfsv4 af_packet [last unloaded: xfs]
> [ 1093.258748] CPU: 3 PID: 12697 Comm: attr Tainted: G        W         5.13.0-rc2-djwx #rc2
> [ 1093.259642] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-1ubuntu1.1 04/01/2014
> [ 1093.260604] RIP: 0010:assfail+0x3c/0x40 [xfs]
> [ 1093.261200] Code: 48 a2 3f a0 e8 81 f9 ff ff 8a 1d 7b e9 0b 00 80 fb 01 76 0f 0f b6 f3 48 c7 c7 a0 57 49 a0 e8 db c9 00 e1 80 e3 01 74 02 0f 0b <0f> 0b 5b c3 48 8d 45 10 48 89 e2 4c 89 e6 48 89 1c 24 48 89 44 24
> [ 1093.263184] RSP: 0018:ffffc90001a0f988 EFLAGS: 00010246
> [ 1093.263763] RAX: 0000000000000000 RBX: ffff88804e004700 RCX: 0000000000000000
> [ 1093.264536] RDX: 00000000ffffffc0 RSI: 0000000000000000 RDI: ffffffffa03ea6d5
> [ 1093.265315] RBP: ffff88804e9fee00 R08: 0000000000000000 R09: 000000000000000a
> [ 1093.266116] R10: 000000000000000a R11: f000000000000000 R12: ffff888042f11740
> [ 1093.266907] R13: 0000000000000058 R14: ffff888042f11740 R15: ffff88804e004738
> [ 1093.267675] FS:  00007f8c3494f740(0000) GS:ffff88807e100000(0000) knlGS:0000000000000000
> [ 1093.268544] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 1093.269178] CR2: 00007f8c34a57710 CR3: 000000004b455005 CR4: 00000000001706a0
> [ 1093.269949] Call Trace:
> [ 1093.270244]  xfs_trans_dirty_buf+0xbe/0x120 [xfs]
> [ 1093.270888]  xfs_trans_log_buf+0x4c/0x100 [xfs]
> [ 1093.271490]  xfs_attr3_leaf_remove+0x2ef/0xc30 [xfs]
> [ 1093.272129]  ? xfs_trans_add_item+0x6b/0x180 [xfs]
> [ 1093.272759]  xfs_attr_node_removename+0x3d/0x90 [xfs]
> [ 1093.273400]  xfs_attr_remove_iter+0x50/0x270 [xfs]
> [ 1093.274015]  xfs_attr_set+0x2ff/0x430 [xfs]
> [ 1093.274562]  xfs_xattr_set+0x89/0xd0 [xfs]
> [ 1093.275139]  __vfs_removexattr+0x52/0x70
> [ 1093.275592]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.276117]  vfs_removexattr+0x56/0x100
> [ 1093.276558]  ovl_xattr_set+0x131/0x1d0 [overlay]
> [ 1093.277085]  __vfs_removexattr+0x52/0x70
> [ 1093.277534]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.278063]  vfs_removexattr+0x56/0x100
> [ 1093.278506]  removexattr+0x58/0x90
> [ 1093.278934]  ? __check_object_size+0xc8/0x280
> [ 1093.279435]  ? strncpy_from_user+0x47/0x180
> [ 1093.279919]  ? preempt_count_add+0x50/0xa0
> [ 1093.280384]  ? __mnt_want_write+0x65/0x90
> [ 1093.280843]  path_removexattr+0x9e/0xc0
> [ 1093.281290]  __x64_sys_lremovexattr+0x14/0x20
> [ 1093.281788]  do_syscall_64+0x3a/0x70
> [ 1093.282208]  entry_SYSCALL_64_after_hwframe+0x44/0xae
> [ 1093.282792] RIP: 0033:0x7f8c34a7207b
> [ 1093.283216] Code: 73 01 c3 48 8b 0d 15 ae 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 c6 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d e5 ad 0c 00 f7 d8 64 89 01 48
> [ 1093.285191] RSP: 002b:00007ffc9f3248f8 EFLAGS: 00000202 ORIG_RAX: 00000000000000c6
> [ 1093.286027] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f8c34a7207b
> [ 1093.286822] RDX: 0000000000000072 RSI: 00007ffc9f324910 RDI: 00007ffc9f3261a0
> [ 1093.287614] RBP: 00007ffc9f326196 R08: 0000000000000000 R09: 00007ffc9f324910
> [ 1093.288396] R10: 00007f8c34b3dbe0 R11: 0000000000000202 R12: 00007ffc9f3261a0
> [ 1093.289174] R13: 00007ffc9f324910 R14: 0000000000000000 R15: 0000000000000001
> [ 1093.289956] ---[ end trace d5f6b816d902441e ]---
> [ 1093.290487] XFS: Assertion failed: bp->b_transp == tp, file: fs/xfs/xfs_trans_buf.c, line: 450
> [ 1093.291444] ------------[ cut here ]------------
> [ 1093.291980] WARNING: CPU: 3 PID: 12697 at fs/xfs/xfs_message.c:112 assfail+0x3c/0x40 [xfs]
> [ 1093.292978] Modules linked in: xfs libcrc32c ip6t_REJECT nf_reject_ipv6 ipt_REJECT nf_reject_ipv4 xt_tcpudp ip_set_hash_ip ip_set_hash_net xt_set ip_set_hash_mac ip_set nfnetlink bfq ip6table_filter ip6_tables iptable_filter pvpanic_mmio pvpanic sch_fq_codel ip_tables x_tables overlay nfsv4 af_packet [last unloaded: xfs]
> [ 1093.295967] CPU: 3 PID: 12697 Comm: attr Tainted: G        W         5.13.0-rc2-djwx #rc2
> [ 1093.296855] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-1ubuntu1.1 04/01/2014
> [ 1093.297814] RIP: 0010:assfail+0x3c/0x40 [xfs]
> [ 1093.298412] Code: 48 a2 3f a0 e8 81 f9 ff ff 8a 1d 7b e9 0b 00 80 fb 01 76 0f 0f b6 f3 48 c7 c7 a0 57 49 a0 e8 db c9 00 e1 80 e3 01 74 02 0f 0b <0f> 0b 5b c3 48 8d 45 10 48 89 e2 4c 89 e6 48 89 1c 24 48 89 44 24
> [ 1093.300398] RSP: 0018:ffffc90001a0f988 EFLAGS: 00010246
> [ 1093.300987] RAX: 0000000000000000 RBX: ffff88804e004700 RCX: 0000000000000000
> [ 1093.301761] RDX: 00000000ffffffc0 RSI: 0000000000000000 RDI: ffffffffa03ea6d5
> [ 1093.302541] RBP: ffff88804e9fee00 R08: 0000000000000000 R09: 000000000000000a
> [ 1093.303328] R10: 000000000000000a R11: f000000000000000 R12: ffff888042f11740
> [ 1093.304107] R13: 0000000000000000 R14: ffff888042f11740 R15: ffff88804e004738
> [ 1093.304878] FS:  00007f8c3494f740(0000) GS:ffff88807e100000(0000) knlGS:0000000000000000
> [ 1093.305743] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 1093.306377] CR2: 00007f8c34a57710 CR3: 000000004b455005 CR4: 00000000001706a0
> [ 1093.307172] Call Trace:
> [ 1093.307470]  xfs_trans_dirty_buf+0xbe/0x120 [xfs]
> [ 1093.308100]  xfs_trans_log_buf+0x4c/0x100 [xfs]
> [ 1093.308700]  xfs_attr3_leaf_remove+0x3b6/0xc30 [xfs]
> [ 1093.309333]  ? xfs_trans_add_item+0x6b/0x180 [xfs]
> [ 1093.309971]  xfs_attr_node_removename+0x3d/0x90 [xfs]
> [ 1093.310614]  xfs_attr_remove_iter+0x50/0x270 [xfs]
> [ 1093.311254]  xfs_attr_set+0x2ff/0x430 [xfs]
> [ 1093.311809]  xfs_xattr_set+0x89/0xd0 [xfs]
> [ 1093.312381]  __vfs_removexattr+0x52/0x70
> [ 1093.312836]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.313367]  vfs_removexattr+0x56/0x100
> [ 1093.313813]  ovl_xattr_set+0x131/0x1d0 [overlay]
> [ 1093.314350]  __vfs_removexattr+0x52/0x70
> [ 1093.314820]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.315352]  vfs_removexattr+0x56/0x100
> [ 1093.315799]  removexattr+0x58/0x90
> [ 1093.316204]  ? __check_object_size+0xc8/0x280
> [ 1093.316701]  ? strncpy_from_user+0x47/0x180
> [ 1093.317187]  ? preempt_count_add+0x50/0xa0
> [ 1093.317656]  ? __mnt_want_write+0x65/0x90
> [ 1093.318124]  path_removexattr+0x9e/0xc0
> [ 1093.318569]  __x64_sys_lremovexattr+0x14/0x20
> [ 1093.319083]  do_syscall_64+0x3a/0x70
> [ 1093.319502]  entry_SYSCALL_64_after_hwframe+0x44/0xae
> [ 1093.320075] RIP: 0033:0x7f8c34a7207b
> [ 1093.320491] Code: 73 01 c3 48 8b 0d 15 ae 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 c6 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d e5 ad 0c 00 f7 d8 64 89 01 48
> [ 1093.322466] RSP: 002b:00007ffc9f3248f8 EFLAGS: 00000202 ORIG_RAX: 00000000000000c6
> [ 1093.323307] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f8c34a7207b
> [ 1093.324092] RDX: 0000000000000072 RSI: 00007ffc9f324910 RDI: 00007ffc9f3261a0
> [ 1093.324864] RBP: 00007ffc9f326196 R08: 0000000000000000 R09: 00007ffc9f324910
> [ 1093.325647] R10: 00007f8c34b3dbe0 R11: 0000000000000202 R12: 00007ffc9f3261a0
> [ 1093.326426] R13: 00007ffc9f324910 R14: 0000000000000000 R15: 0000000000000001
> [ 1093.327224] ---[ end trace d5f6b816d902441f ]---
> [ 1093.327751] XFS: Assertion failed: !(bip->bli_flags & XFS_BLI_LOGGED), file: fs/xfs/xfs_trans_buf.c, line: 79
> [ 1093.328827] ------------[ cut here ]------------
> [ 1093.329352] WARNING: CPU: 3 PID: 12697 at fs/xfs/xfs_message.c:112 assfail+0x3c/0x40 [xfs]
> [ 1093.330350] Modules linked in: xfs libcrc32c ip6t_REJECT nf_reject_ipv6 ipt_REJECT nf_reject_ipv4 xt_tcpudp ip_set_hash_ip ip_set_hash_net xt_set ip_set_hash_mac ip_set nfnetlink bfq ip6table_filter ip6_tables iptable_filter pvpanic_mmio pvpanic sch_fq_codel ip_tables x_tables overlay nfsv4 af_packet [last unloaded: xfs]
> [ 1093.333309] CPU: 3 PID: 12697 Comm: attr Tainted: G        W         5.13.0-rc2-djwx #rc2
> [ 1093.334209] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-1ubuntu1.1 04/01/2014
> [ 1093.335181] RIP: 0010:assfail+0x3c/0x40 [xfs]
> [ 1093.335774] Code: 48 a2 3f a0 e8 81 f9 ff ff 8a 1d 7b e9 0b 00 80 fb 01 76 0f 0f b6 f3 48 c7 c7 a0 57 49 a0 e8 db c9 00 e1 80 e3 01 74 02 0f 0b <0f> 0b 5b c3 48 8d 45 10 48 89 e2 4c 89 e6 48 89 1c 24 48 89 44 24
> [ 1093.337749] RSP: 0018:ffffc90001a0f930 EFLAGS: 00010246
> [ 1093.338337] RAX: 0000000000000000 RBX: ffff88804e9fee00 RCX: 0000000000000000
> [ 1093.339134] RDX: 00000000ffffffc0 RSI: 0000000000000000 RDI: ffffffffa03ea6d5
> [ 1093.339920] RBP: ffff88804e004738 R08: 0000000000000000 R09: 000000000000000a
> [ 1093.340697] R10: 000000000000000a R11: f000000000000000 R12: ffff888042f11740
> [ 1093.341477] R13: 0000000000000001 R14: ffffc90001a0f9e0 R15: ffffffffa03daaa0
> [ 1093.342258] FS:  00007f8c3494f740(0000) GS:ffff88807e100000(0000) knlGS:0000000000000000
> [ 1093.343144] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 1093.343779] CR2: 00007f8c34a57710 CR3: 000000004b455005 CR4: 00000000001706a0
> [ 1093.344561] Call Trace:
> [ 1093.344857]  _xfs_trans_bjoin+0x100/0x110 [xfs]
> [ 1093.345469]  xfs_trans_read_buf_map+0x22b/0x4a0 [xfs]
> [ 1093.346130]  xfs_da_read_buf+0xce/0x120 [xfs]
> [ 1093.346714]  xfs_attr3_leaf_read+0x26/0x60 [xfs]
> [ 1093.347313]  ? xfs_attr_is_leaf+0x76/0x90 [xfs]
> [ 1093.347901]  xfs_attr_node_shrink+0x54/0x100 [xfs]
> [ 1093.348514]  xfs_attr_remove_iter+0xa9/0x270 [xfs]
> [ 1093.349129]  xfs_attr_set+0x2ff/0x430 [xfs]
> [ 1093.349675]  xfs_xattr_set+0x89/0xd0 [xfs]
> [ 1093.350237]  __vfs_removexattr+0x52/0x70
> [ 1093.350684]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.351228]  vfs_removexattr+0x56/0x100
> [ 1093.351667]  ovl_xattr_set+0x131/0x1d0 [overlay]
> [ 1093.352194]  __vfs_removexattr+0x52/0x70
> [ 1093.352642]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.353165]  vfs_removexattr+0x56/0x100
> [ 1093.353603]  removexattr+0x58/0x90
> [ 1093.354003]  ? __check_object_size+0xc8/0x280
> [ 1093.354493]  ? strncpy_from_user+0x47/0x180
> [ 1093.354983]  ? preempt_count_add+0x50/0xa0
> [ 1093.355452]  ? __mnt_want_write+0x65/0x90
> [ 1093.355914]  path_removexattr+0x9e/0xc0
> [ 1093.356353]  __x64_sys_lremovexattr+0x14/0x20
> [ 1093.356840]  do_syscall_64+0x3a/0x70
> [ 1093.357258]  entry_SYSCALL_64_after_hwframe+0x44/0xae
> [ 1093.357819] RIP: 0033:0x7f8c34a7207b
> [ 1093.358236] Code: 73 01 c3 48 8b 0d 15 ae 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 c6 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d e5 ad 0c 00 f7 d8 64 89 01 48
> [ 1093.360210] RSP: 002b:00007ffc9f3248f8 EFLAGS: 00000202 ORIG_RAX: 00000000000000c6
> [ 1093.361031] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f8c34a7207b
> [ 1093.361800] RDX: 0000000000000072 RSI: 00007ffc9f324910 RDI: 00007ffc9f3261a0
> [ 1093.362574] RBP: 00007ffc9f326196 R08: 0000000000000000 R09: 00007ffc9f324910
> [ 1093.363361] R10: 00007f8c34b3dbe0 R11: 0000000000000202 R12: 00007ffc9f3261a0
> [ 1093.364137] R13: 00007ffc9f324910 R14: 0000000000000000 R15: 0000000000000001
> [ 1093.364912] ---[ end trace d5f6b816d9024420 ]---
> [ 1093.365425] XFS: Assertion failed: !test_bit(XFS_LI_DIRTY, &lip->li_flags), file: fs/xfs/xfs_trans.c, line: 657
> [ 1093.366508] ------------[ cut here ]------------
> [ 1093.367045] WARNING: CPU: 3 PID: 12697 at fs/xfs/xfs_message.c:112 assfail+0x3c/0x40 [xfs]
> [ 1093.368050] Modules linked in: xfs libcrc32c ip6t_REJECT nf_reject_ipv6 ipt_REJECT nf_reject_ipv4 xt_tcpudp ip_set_hash_ip ip_set_hash_net xt_set ip_set_hash_mac ip_set nfnetlink bfq ip6table_filter ip6_tables iptable_filter pvpanic_mmio pvpanic sch_fq_codel ip_tables x_tables overlay nfsv4 af_packet [last unloaded: xfs]
> [ 1093.371056] CPU: 3 PID: 12697 Comm: attr Tainted: G        W         5.13.0-rc2-djwx #rc2
> [ 1093.371941] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-1ubuntu1.1 04/01/2014
> [ 1093.372891] RIP: 0010:assfail+0x3c/0x40 [xfs]
> [ 1093.373477] Code: 48 a2 3f a0 e8 81 f9 ff ff 8a 1d 7b e9 0b 00 80 fb 01 76 0f 0f b6 f3 48 c7 c7 a0 57 49 a0 e8 db c9 00 e1 80 e3 01 74 02 0f 0b <0f> 0b 5b c3 48 8d 45 10 48 89 e2 4c 89 e6 48 89 1c 24 48 89 44 24
> [ 1093.375457] RSP: 0018:ffffc90001a0f900 EFLAGS: 00010246
> [ 1093.376042] RAX: 0000000000000000 RBX: ffff88804e004700 RCX: 0000000000000000
> [ 1093.376811] RDX: 00000000ffffffc0 RSI: 0000000000000000 RDI: ffffffffa03ea6d5
> [ 1093.377584] RBP: ffff888042f11740 R08: 0000000000000000 R09: 000000000000000a
> [ 1093.378361] R10: 000000000000000a R11: f000000000000000 R12: ffff88804e004748
> [ 1093.379147] R13: 0000000000000001 R14: ffffc90001a0f9e0 R15: ffffffffa03daaa0
> [ 1093.379926] FS:  00007f8c3494f740(0000) GS:ffff88807e100000(0000) knlGS:0000000000000000
> [ 1093.380796] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 1093.381427] CR2: 00007f8c34a57710 CR3: 000000004b455005 CR4: 00000000001706a0
> [ 1093.382201] Call Trace:
> [ 1093.382497]  xfs_trans_add_item+0x171/0x180 [xfs]
> [ 1093.383137]  _xfs_trans_bjoin+0x72/0x110 [xfs]
> [ 1093.383732]  xfs_trans_read_buf_map+0x22b/0x4a0 [xfs]
> [ 1093.384395]  xfs_da_read_buf+0xce/0x120 [xfs]
> [ 1093.384973]  xfs_attr3_leaf_read+0x26/0x60 [xfs]
> [ 1093.385567]  ? xfs_attr_is_leaf+0x76/0x90 [xfs]
> [ 1093.386162]  xfs_attr_node_shrink+0x54/0x100 [xfs]
> [ 1093.386789]  xfs_attr_remove_iter+0xa9/0x270 [xfs]
> [ 1093.387402]  xfs_attr_set+0x2ff/0x430 [xfs]
> [ 1093.387953]  xfs_xattr_set+0x89/0xd0 [xfs]
> [ 1093.388507]  __vfs_removexattr+0x52/0x70
> [ 1093.388959]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.389476]  vfs_removexattr+0x56/0x100
> [ 1093.389919]  ovl_xattr_set+0x131/0x1d0 [overlay]
> [ 1093.390437]  __vfs_removexattr+0x52/0x70
> [ 1093.390902]  __vfs_removexattr_locked+0xb8/0x140
> [ 1093.391420]  vfs_removexattr+0x56/0x100
> [ 1093.391856]  removexattr+0x58/0x90
> [ 1093.392257]  ? __check_object_size+0xc8/0x280
> [ 1093.392747]  ? strncpy_from_user+0x47/0x180
> [ 1093.393223]  ? preempt_count_add+0x50/0xa0
> [ 1093.393684]  ? __mnt_want_write+0x65/0x90
> [ 1093.394145]  path_removexattr+0x9e/0xc0
> [ 1093.394582]  __x64_sys_lremovexattr+0x14/0x20
> [ 1093.395095]  do_syscall_64+0x3a/0x70
> [ 1093.395508]  entry_SYSCALL_64_after_hwframe+0x44/0xae
> [ 1093.396072] RIP: 0033:0x7f8c34a7207b
> [ 1093.396478] Code: 73 01 c3 48 8b 0d 15 ae 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 c6 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d e5 ad 0c 00 f7 d8 64 89 01 48
> [ 1093.398426] RSP: 002b:00007ffc9f3248f8 EFLAGS: 00000202 ORIG_RAX: 00000000000000c6
> [ 1093.399254] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f8c34a7207b
> [ 1093.400032] RDX: 0000000000000072 RSI: 00007ffc9f324910 RDI: 00007ffc9f3261a0
> [ 1093.400800] RBP: 00007ffc9f326196 R08: 0000000000000000 R09: 00007ffc9f324910
> [ 1093.401571] R10: 00007f8c34b3dbe0 R11: 0000000000000202 R12: 00007ffc9f3261a0
> [ 1093.402343] R13: 00007ffc9f324910 R14: 0000000000000000 R15: 0000000000000001
> [ 1093.403130] ---[ end trace d5f6b816d9024421 ]---
> [ 1093.565232] XFS (sdc): Unmounting Filesystem
> [ 1093.604852] [U] TEST FINISHED: -overlay generic/020 @ Wed May 26 10:34:41 PDT 2021
> 
> The first assertion, I think, is an accounting problem -- the ASSERT
> checks that args->rmtblkno should be zero after calling the function
> __xfs_attr_rmtval_remove to unmap the blocks backing the remote value
> from the attr fork.  I don't see anywhere in that function that actually
> updates the args fields, however.
> 
> AFAICT all this needs is a little bookkeeping update in
> __xfs_attr_rmtval_remove.
> 
> The second and subsequent assertions come from trying to log a buffer
> that isn't attached to the current transaction.  I think what's
> happening is:
> 
> 1. we're in state XFS_DAS_RMTBLK
> 2. call __xfs_attr_rmtval_remove to remove a remote block, which returns 0
> 3. call xfs_attr_refillstate to re-attach buffers to the da state
> 4. set state to XFS_DAS_RM_NAME
> 5. set XFS_DAC_DEFER_FINISH and return EAGAIN to finish deferred updates
> 6. <transaction roll releases buffers>
> 7. now we're in state XFS_DAS_RM_NAME
> 8. call xfs_attr_node_removename to remove the name
> 9. trip assert because the buffers in state->path.blk[] aren't joined to the
>     current transaction
> 
> I think the solution here is to call xfs_attr_refillstate to reattach
> all the buffers to the transaction, but only if we've freshly rolled the
> transaction.  If we fell through the UNINIT and RMTBLK cases into
> RM_NAME without rolling anything, then we're still on the same
> transaction that we used for the first lookup and don't need to refill
> the state.
> 
> Can you take a look at this patch?  It fixes the problems for that one
> test, but I haven't run it through QA yet.
Ok, it seems to be doing ok so far in other tests.  (at least for me!) 
Should I just add this to another patch at the end?  Thank you for the 
catch!

Allison

> 
> --D
> 
> diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
> index 20b1e3c6bdd0..7b3d0c3d2e65 100644
> --- a/fs/xfs/libxfs/xfs_attr.c
> +++ b/fs/xfs/libxfs/xfs_attr.c
> @@ -1442,6 +1442,17 @@ xfs_attr_remove_iter(
>   
>   		/* fallthrough */
>   	case XFS_DAS_RM_NAME:
> +
> +		/*
> +		 * If we came here fresh from a transaction roll, reattach all
> +		 * the buffers to the current transaction.
> +		 */
> +		if (dac->dela_state == XFS_DAS_RM_NAME) {
> +			error = xfs_attr_refillstate(state);
> +			if (error)
> +				goto out;
> +		}
> +
>   		retval = xfs_attr_node_removename(args, state);
>   
>   		/*
> diff --git a/fs/xfs/libxfs/xfs_attr_remote.c b/fs/xfs/libxfs/xfs_attr_remote.c
> index b5bc50cad9bf..d560b55abedb 100644
> --- a/fs/xfs/libxfs/xfs_attr_remote.c
> +++ b/fs/xfs/libxfs/xfs_attr_remote.c
> @@ -699,5 +699,8 @@ __xfs_attr_rmtval_remove(
>   		return -EAGAIN;
>   	}
>   
> -	return error;
> +	/* We've unmapped the remote value blocks, so zero these out */
> +	args->rmtblkno = 0;
> +	args->rmtblkcnt = 0;
> +	return 0;
>   }
> 

  reply	other threads:[~2021-05-27 16:55 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-25 19:54 [PATCH v19 00/14] Delay Ready Attributes Allison Henderson
2021-05-25 19:54 ` [PATCH v19 01/14] xfs: Reverse apply 72b97ea40d Allison Henderson
2021-05-25 19:54 ` [PATCH v19 02/14] xfs: Add xfs_attr_node_remove_name Allison Henderson
2021-05-25 19:54 ` [PATCH v19 03/14] xfs: Refactor xfs_attr_set_shortform Allison Henderson
2021-05-25 19:54 ` [PATCH v19 04/14] xfs: Separate xfs_attr_node_addname and xfs_attr_node_addname_clear_incomplete Allison Henderson
2021-05-25 19:54 ` [PATCH v19 05/14] xfs: Add helper xfs_attr_node_addname_find_attr Allison Henderson
2021-05-25 19:54 ` [PATCH v19 06/14] xfs: Hoist xfs_attr_node_addname Allison Henderson
2021-05-25 19:54 ` [PATCH v19 07/14] xfs: Hoist xfs_attr_leaf_addname Allison Henderson
2021-05-25 19:54 ` [PATCH v19 08/14] xfs: Hoist node transaction handling Allison Henderson
2021-05-25 19:54 ` [PATCH v19 09/14] xfs: Add delay ready attr remove routines Allison Henderson
2021-05-25 19:55 ` [PATCH v19 10/14] xfs: Add delay ready attr set routines Allison Henderson
2021-05-25 19:55 ` [PATCH v19 11/14] xfs: Remove xfs_attr_rmtval_set Allison Henderson
2021-05-25 20:34   ` Darrick J. Wong
2021-05-27  6:13   ` Chandan Babu R
2021-05-25 19:55 ` [PATCH v19 12/14] xfs: Clean up xfs_attr_node_addname_clear_incomplete Allison Henderson
2021-05-25 20:35   ` Darrick J. Wong
2021-05-27  7:03   ` Chandan Babu R
2021-05-25 19:55 ` [PATCH v19 13/14] xfs: Remove default ASSERT in xfs_attr_set_iter Allison Henderson
2021-05-25 20:52   ` Darrick J. Wong
2021-05-26 18:13     ` Allison Henderson
2021-05-27  7:40       ` Chandan Babu R
2021-05-25 19:55 ` [PATCH v19 14/14] xfs: Make attr name schemes consistent Allison Henderson
2021-05-25 20:36   ` Darrick J. Wong
2021-05-27  8:01   ` Chandan Babu R
2021-05-26 18:19 ` [PATCH v19 00/14] Delay Ready Attributes Darrick J. Wong
2021-05-27 16:54   ` Allison Henderson [this message]
2021-05-27 17:00     ` Darrick J. Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=67088fde-e95d-22ce-e4ef-b868500d7aee@oracle.com \
    --to=allison.henderson@oracle.com \
    --cc=djwong@kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox