Hello, Twice for past two days I caught an error with btrfs, you can see a fragment of dmesg on http://paste.org.ru/?kz4x31 and http://paste.org.ru/?lwdeu3 It''s a buildserver with jenkins that several times an hour starts a test script. The only problem I could suppose is using "subvolume snapshot" feature in script. So, I have about two dozen of snapshots that refresh periodically. Also, I''d like to add small feature request: it''ll be good for mount.btrfs to show more valuable error messages. For example, if you try to mount btrfs volume with wrong default subvolume-id, mount.btrfs says: > mount: mount(2) failed: No such file or directory And there''s nothing in dmesg that could help user to understand what happened. I''ve lost about ten minutes trying to understand what does it want from me. Best regards, Slava Barinov. -- 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
On Thu, Dec 27, 2012 at 08:27:11AM +0400, Slava Barinov wrote:> Hello, > > Twice for past two days I caught an error with btrfs, you can see a > fragment of dmesg on http://paste.org.ru/?kz4x31 and > http://paste.org.ru/?lwdeu3 > > It''s a buildserver with jenkins that several times an hour starts a > test script. The only problem I could suppose is using "subvolume > snapshot" feature in script. So, I have about two dozen of snapshots > that refresh periodically. > > Also, I''d like to add small feature request: it''ll be good for > mount.btrfs to show more valuable error messages. For example, if you > try to mount btrfs volume with wrong default subvolume-id, mount.btrfs > says: > > > mount: mount(2) failed: No such file or directory > > And there''s nothing in dmesg that could help user to understand what > happened. I''ve lost about ten minutes trying to understand what does > it want from me.Hi Slava, Could you please show me what line does ''walk_down_proc+0x2b0/0x2e0 [btrfs]'' refer to? thanks, liubo -- 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
On Thu, Dec 27, 2012 at 04:07:31PM +0800, Liu Bo wrote:> On Thu, Dec 27, 2012 at 08:27:11AM +0400, Slava Barinov wrote: > > And there''s nothing in dmesg that could help user to understand what > > happened. I''ve lost about ten minutes trying to understand what does > > it want from me. >Could you please show me what line does ''walk_down_proc+0x2b0/0x2e0 [btrfs]'' > refer to?It''s 6578 if (path->locks[level] && level > 0) { 6579 btrfs_tree_unlock_rw(eb, path->locks[level]); ^^^^ 6580 path->locks[level] = 0; 6581 } 6582 return 0; which calls btrfs_tree_unlock() and hits the 241 void btrfs_tree_unlock(struct extent_buffer *eb) 242 { 243 int blockers = atomic_read(&eb->blocking_writers); 244 245 BUG_ON(blockers > 1); 246 247 btrfs_assert_tree_locked(eb); -> 263 void btrfs_assert_tree_locked(struct extent_buffer *eb) 264 { 265 BUG_ON(!atomic_read(&eb->write_locks)); 266 } 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
Hi Slava, David, I''ve sent a patch to fix the bug(Cced you), could you please check if it works? :) thanks, liubo On Thu, Dec 27, 2012 at 02:24:37PM +0100, David Sterba wrote:> On Thu, Dec 27, 2012 at 04:07:31PM +0800, Liu Bo wrote: > > On Thu, Dec 27, 2012 at 08:27:11AM +0400, Slava Barinov wrote: > > > And there''s nothing in dmesg that could help user to understand what > > > happened. I''ve lost about ten minutes trying to understand what does > > > it want from me. > >Could you please show me what line does ''walk_down_proc+0x2b0/0x2e0 [btrfs]'' > > refer to? > > It''s > > 6578 if (path->locks[level] && level > 0) { > 6579 btrfs_tree_unlock_rw(eb, path->locks[level]); > ^^^^ > 6580 path->locks[level] = 0; > 6581 } > 6582 return 0; > > which calls btrfs_tree_unlock() and hits the > > 241 void btrfs_tree_unlock(struct extent_buffer *eb) > 242 { > 243 int blockers = atomic_read(&eb->blocking_writers); > 244 > 245 BUG_ON(blockers > 1); > 246 > 247 btrfs_assert_tree_locked(eb); > > -> > > 263 void btrfs_assert_tree_locked(struct extent_buffer *eb) > 264 { > 265 BUG_ON(!atomic_read(&eb->write_locks)); > 266 } > > > 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