xfsdump: don't put null inode
PATCH 1/1 xfsdump: don't put null inode
John Willis pointed this out:
$ sudo xfs_db -x /dev/evms/RAID5-SATA-1 cache_node_purge: refcount was 1, not zero (node=0x80dd660) xfs_db: cannot read root inode (22) cache_node_purge: refcount was 1, not zero (node=0x80e0008) xfs_db: cannot read realtime bitmap inode (22) Segmentation fault
it dies when pthread code gets a null ptr, like this:
(gdb) bt
#0 0x0000003ef1c08309 in pthread_mutex_lock () from /lib64/libpthread.so.0 #1 0x000000000044f5af in cache_node_put (cache=0x25a2030, node=0x0) at cache.c:368 #2 0x000000000041ff7e in libxfs_mount (mp=0x0, sb=<value optimized out>, dev=<value optimized out>, logdev=<value optimized out>,
rtdev=<value optimized out>, flags=1) at init.c:680
#3 0x0000000000416157 in init (argc=2, argv=0x7fffd9e19798) at init.c:125 #4 0x000000000041635a in main (argc=48, argv=0x7fffd9e19798) at init.c:153 (gdb)
when reading the root inode fails, and we try to libxfs_iput it anyway.
The following seems to fix it ...
-Eric
libxfs/init.c +2 -1
@@ -677,7 +677,8 @@ libxfs_mount(ASSERT (mp->m_rootip !=NULL ); }if ((flags &LIBXFS_MOUNT_ROOTINOS ) &&rtmount_inodes (mp)) { -libxfs_iput (mp->m_rootip,0 ); +if (mp->m_rootip) +libxfs_iput (mp->m_rootip,0 );return NULL ; }
Re: [PATCH] xfs_db: don't put null inode
Ugh subject should be xfs_db of course :/
Quoted 42 lines · Eric Sandeen
John Willis pointed this out:
$ sudo xfs_db -x /dev/evms/RAID5-SATA-1 cache_node_purge: refcount was 1, not zero (node=0x80dd660) xfs_db: cannot read root inode (22) cache_node_purge: refcount was 1, not zero (node=0x80e0008) xfs_db: cannot read realtime bitmap inode (22) Segmentation faultit dies when pthread code gets a null ptr, like this:
(gdb) bt
#0 0x0000003ef1c08309 in pthread_mutex_lock () from /lib64/libpthread.so.0 #1 0x000000000044f5af in cache_node_put (cache=0x25a2030, node=0x0) at cache.c:368 #2 0x000000000041ff7e in libxfs_mount (mp=0x0, sb=<value optimized out>, dev=<value optimized out>, logdev=<value optimized out>,rtdev=<value optimized out>, flags=1) at init.c:680
#30x0000000000416157in init (argc=2, argv=0x7fffd9e19798) at init.c:125 #40x000000000041635ain main (argc=48, argv=0x7fffd9e19798) at init.c:153 (gdb)when reading the root inode fails, and we try to
libxfs_iputit anyway.The following seems to fix it ...
-Eric
Index:
xfsprogs/libxfs/init.c
===================================================================libxfs/init.c +2
-1@@ -677,7 +677,8 @@ libxfs_mount(ASSERT (mp->m_rootip !=NULL ); }if ((flags &LIBXFS_MOUNT_ROOTINOS ) &&rtmount_inodes (mp)) { -libxfs_iput (mp->m_rootip,0 ); +if (mp->m_rootip) +libxfs_iput (mp->m_rootip,0 );return NULL ; }
Re: [PATCH] xfs_db: don't put null inode
Thanks Eric (and John). Barry, can you please rv and pull this into libxfs
Cheers
Quoted 46 lines · Eric Sandeen
Ugh subject should be
xfs_dbof course :/Quoted 41 lines · Eric Sandeen
John Willis pointed this out:
$ sudo xfs_db -x /dev/evms/RAID5-SATA-1 cache_node_purge: refcount was 1, not zero (node=0x80dd660) xfs_db: cannot read root inode (22) cache_node_purge: refcount was 1, not zero (node=0x80e0008) xfs_db: cannot read realtime bitmap inode (22) Segmentation faultit dies when pthread code gets a null ptr, like this:
(gdb) bt
#0 0x0000003ef1c08309 in pthread_mutex_lock () from /lib64/libpthread.so.0 #1 0x000000000044f5af in cache_node_put (cache=0x25a2030, node=0x0) at cache.c:368 #2 0x000000000041ff7e in libxfs_mount (mp=0x0, sb=<value optimized out>, dev=<value optimized out>, logdev=<value optimized out>,rtdev=<value optimized out>, flags=1) at init.c:680
#30x0000000000416157in init (argc=2, argv=0x7fffd9e19798) at init.c:125 #40x000000000041635ain main (argc=48, argv=0x7fffd9e19798) at init.c:153 (gdb)when reading the root inode fails, and we try to
libxfs_iputit anyway.The following seems to fix it ...
-Eric
Index:
xfsprogs/libxfs/init.c
===================================================================libxfs/init.c +2
-1@@ -677,7 +677,8 @@ libxfs_mount(ASSERT (mp->m_rootip !=NULL ); }if ((flags &LIBXFS_MOUNT_ROOTINOS ) &&rtmount_inodes (mp)) { -libxfs_iput (mp->m_rootip,0 ); +if (mp->m_rootip) +libxfs_iput (mp->m_rootip,0 );return NULL ; }
Signature · 4 lines
Mark Goodwin [email protected] Engineering Manager for XFS and PCP Phone: +61-3-99631937 SGI Australian Software Group Cell: +61-4-18969583 -------------------------------------------------------------