David Sterba
2011-Oct-03  16:17 UTC
WARNING: at fs/dcache.c:1256 d_set_d_op+0xaa/0xc0() , nested snapshots
Hi,
the $subj warning just appeared in the log after snapshotting a
subvolume with a snaphost inside. Reproducer:
#!/bin/sh
subv=subv$RANDOM
mnt=/mnt/sdb
btrfs subvol create $mnt/$subv
btrfs subvol snap $mnt/$subv $mnt/$subv/snap1
btrfs subvol snap $mnt/$subv $mnt/$subv/snap2
btrfs subvol snap $mnt/$subv/snap2 $mnt/$subv/snap3
find $mnt/$subv
mkdir $mnt/$subv/snap2/snap1/error-dir
touch $mnt/$subv/snap2/snap1/error-file
stat $mnt/$subv/snap2/snap*
stat $mnt/$subv/snap3/snap*
for i in $mnt/$subv/snap* $mnt/$subv; do
        btrfs subvol delete $i
done
<<EOF>>
warning details:
[   69.218718] ------------[ cut here ]------------
[   69.224557] WARNING: at fs/dcache.c:1252 d_set_d_op+0x87/0xc0()
[   69.232186] Hardware name: Santa Rosa platform
[   69.232189] Modules linked in: btrfs aoe
[   69.232198] Pid: 2887, comm: mkdir Not tainted 3.1.0-rc8-default+ #41
[   69.232202] Call Trace:
[   69.232211]  [<ffffffff810980bf>] warn_slowpath_common+0x7f/0xc0
[   69.232217]  [<ffffffff8109811a>] warn_slowpath_null+0x1a/0x20
[   69.232223]  [<ffffffff81199cc7>] d_set_d_op+0x87/0xc0
[   69.232230]  [<ffffffff811a9aef>] simple_lookup+0x3f/0x60
[   69.232235]  [<ffffffff8118eff5>] d_alloc_and_lookup+0x45/0x90
[   69.232241]  [<ffffffff8119ce05>] ? d_lookup+0x35/0x60
[   69.232246]  [<ffffffff811900b8>] __lookup_hash+0xa8/0xf0
[   69.232251]  [<ffffffff81190119>] lookup_hash+0x19/0x20
[   69.232257]  [<ffffffff811930e2>] kern_path_create+0x92/0x140
[   69.232264]  [<ffffffff8139dde6>] ? strncpy_from_user+0x36/0x50
[   69.232269]  [<ffffffff8118f3ac>] ? getname_flags+0x6c/0x210
[   69.232274]  [<ffffffff811931dd>] user_path_create+0x4d/0x80
[   69.232279]  [<ffffffff81194211>] sys_mkdirat+0x31/0xe0
[   69.232284]  [<ffffffff811942d8>] sys_mkdir+0x18/0x20
[   69.232292]  [<ffffffff81be8b42>] system_call_fastpath+0x16/0x1b
[   69.232296] ---[ end trace 6ff19356b0390d0a ]---
[   69.232299] ------------[ cut here ]------------
[   69.232304] WARNING: at fs/dcache.c:1256 d_set_d_op+0xaa/0xc0()
[   69.232307] Hardware name: Santa Rosa platform
[   69.232309] Modules linked in: btrfs aoe
[   69.232316] Pid: 2887, comm: mkdir Tainted: G        W 3.1.0-rc8-default+ #41
[   69.232319] Call Trace:
[   69.232325]  [<ffffffff810980bf>] warn_slowpath_common+0x7f/0xc0
[   69.232330]  [<ffffffff8109811a>] warn_slowpath_null+0x1a/0x20
[   69.232336]  [<ffffffff81199cea>] d_set_d_op+0xaa/0xc0
[   69.232341]  [<ffffffff811a9aef>] simple_lookup+0x3f/0x60
[   69.232346]  [<ffffffff8118eff5>] d_alloc_and_lookup+0x45/0x90
[   69.232352]  [<ffffffff8119ce05>] ? d_lookup+0x35/0x60
[   69.232358]  [<ffffffff811900b8>] __lookup_hash+0xa8/0xf0
[   69.232363]  [<ffffffff81190119>] lookup_hash+0x19/0x20
[   69.232368]  [<ffffffff811930e2>] kern_path_create+0x92/0x140
[   69.232374]  [<ffffffff8139dde6>] ? strncpy_from_user+0x36/0x50
[   69.232379]  [<ffffffff8118f3ac>] ? getname_flags+0x6c/0x210
[   69.232384]  [<ffffffff811931dd>] user_path_create+0x4d/0x80
[   69.232389]  [<ffffffff81194211>] sys_mkdirat+0x31/0xe0
[   69.232393]  [<ffffffff811942d8>] sys_mkdir+0x18/0x20
[   69.232399]  [<ffffffff81be8b42>] system_call_fastpath+0x16/0x1b
[   69.232403] ---[ end trace 6ff19356b0390d0b ]---
1250 void d_set_d_op(struct dentry *dentry, const struct dentry_operations *op)
1251 {
1252         WARN_ON_ONCE(dentry->d_op);
1253         WARN_ON_ONCE(dentry->d_flags & (DCACHE_OP_HASH  |
1254                                 DCACHE_OP_COMPARE       |
1255                                 DCACHE_OP_REVALIDATE    |
1256                                 DCACHE_OP_DELETE ));
(pops up only just once)
1257         dentry->d_op = op;
1258         if (!op)
1259                 return;
1260         if (op->d_hash)
1261                 dentry->d_flags |= DCACHE_OP_HASH;
1262         if (op->d_compare)
1263                 dentry->d_flags |= DCACHE_OP_COMPARE;
1264         if (op->d_revalidate)
1265                 dentry->d_flags |= DCACHE_OP_REVALIDATE;
1266         if (op->d_delete)
1267                 dentry->d_flags |= DCACHE_OP_DELETE;
1268
1269 }
1270 EXPORT_SYMBOL(d_set_d_op);
the ''mkdir'' and ''touch'' fail:
mkdir: cannot create directory
`/mnt/sdb/subv18290/snap2/snap1/error-dir'': Operation not permitted
touch: cannot touch `/mnt/sdb/subv18290/snap2/snap1/error-file'':
Permission denied
stat:
  File: `/mnt/sdb/subv18290/snap2/snap1''
  Size: 0               Blocks: 0          IO Block: 4096   directory
Device: 13h/19d Inode: 2           Links: 1
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-10-03 18:04:12.001392638 +0200
Modify: 2011-10-03 18:04:12.001392638 +0200
Change: 2011-10-03 18:04:12.001392638 +0200
 Birth: -
  File: `/mnt/sdb/subv18290/snap3/snap1''
  Size: 0               Blocks: 0          IO Block: 4096   directory
Device: 13h/19d Inode: 2           Links: 1
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-10-03 18:04:12.001392638 +0200
Modify: 2011-10-03 18:04:12.001392638 +0200
Change: 2011-10-03 18:04:12.001392638 +0200
 Birth: -
  File: `/mnt/sdb/subv18290/snap3/snap2''
  Size: 0               Blocks: 0          IO Block: 4096   directory
Device: 13h/19d Inode: 2           Links: 1
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-10-03 18:04:12.001392638 +0200
Modify: 2011-10-03 18:04:12.001392638 +0200
Change: 2011-10-03 18:04:12.001392638 +0200
 Birth: -
Please note the ''Inode: 2''. Any regular directory created in
under the
subvolume has inode number 257+ .
The snapshots are deletable.
Sources: http://repo.or.cz/w/linux-2.6/btrfs-unstable.git btrfs-next-stable
(linus + josef + hotfixes from mailinglist).
david
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html