Project

General

Profile

Actions

Bug #46056

closed

assertion triggered in LRU::lru_touch in ganesha+libcephfs client

Added by Jeff Layton almost 4 years ago. Updated almost 4 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(FS):
Ganesha FSAL
Labels (FS):
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

Testing a simple vstart setup with these commands. ganesha is configured with 2 exports that are exporting the same filesystem:

ceph nfs export create cephfs "a" $cluster_id "/cephfs" 
ceph nfs export create cephfs "a" $cluster_id "/cephfs1" 

...then, on a nfs client:

mount -o port=$NFS_PORT ip_addr:/cephfs /mnt
echo foo > /mnt/foo
umount /mnt
mount -o port=$NFS_PORT ip_addr:/cephfs1 /mnt
echo foo > /mnt/foo

...the last command hangs, because ganesha has crashed. Here's the stack trace:

(gdb) bt
#0  0x00007faabdd55a25 in raise () from /lib64/libc.so.6
#1  0x00007faabdd3e895 in abort () from /lib64/libc.so.6
#2  0x00007faab155fc0e in ceph::__ceph_assert_fail (assertion=0x7faaa4719db7 "o->lru == this", file=0x7faaa4719cb0 "/home/jlayton/git/ceph/src/include/lru.h", line=112, 
    func=0x7faaa4719dc8 "bool LRU::lru_touch(LRUObject*)") at /home/jlayton/git/ceph/src/common/assert.cc:75
#3  0x00007faab155fcc1 in ceph::__ceph_assert_fail (ctx=...) at /home/jlayton/git/ceph/src/common/assert.cc:80
#4  0x00007faaa462fefa in LRU::lru_touch (this=0x563286e2c8a8, o=0x7fa9b000aed0) at /home/jlayton/git/ceph/src/include/lru.h:112
#5  0x00007faaa45d7fc2 in Client::touch_dn (this=0x563286e2c6e0, dn=0x7fa9b000aed0) at /home/jlayton/git/ceph/src/client/Client.cc:7552
#6  0x00007faaa45ce6e0 in Client::_lookup (this=0x563286e2c6e0, dir=0x7faa08007db0, dname="foo", mask=341, target=0x7faaa44e8388, perms=...)
    at /home/jlayton/git/ceph/src/client/Client.cc:6505
#7  0x00007faaa45f3633 in Client::ll_lookupx (this=0x563286e2c6e0, parent=0x7faa08007db0, name=0x7fa9b0007980 "foo", out=0x7faaa44e84b8, stx=0x7faaa44e84c0, want=8191, flags=0, perms=...)
    at /home/jlayton/git/ceph/src/client/Client.cc:10940
#8  0x00007faaa456e970 in ceph_ll_lookup (cmount=0x563286c65700, parent=0x7faa08007db0, name=0x7fa9b0007980 "foo", out=0x7faaa44e84b8, stx=0x7faaa44e84c0, want=8191, flags=0, 
    perms=0x7fa9b000b7c0) at /home/jlayton/git/ceph/src/libcephfs.cc:1608
#9  0x00007faabe0f5da6 in ceph_fsal_lookup () from /usr/lib64/ganesha/libfsalceph.so
#10 0x00007faabe01f699 in mdc_lookup_uncached () from /lib64/libganesha_nfsd.so.3.3
#11 0x00007faabe01fb32 in mdc_lookup () from /lib64/libganesha_nfsd.so.3.3
#12 0x00007faabe010ccf in mdcache_lookup () from /lib64/libganesha_nfsd.so.3.3
#13 0x00007faabdfdeff6 in open4_ex () from /lib64/libganesha_nfsd.so.3.3
#14 0x00007faabdfe11ca in nfs4_op_open () from /lib64/libganesha_nfsd.so.3.3
#15 0x00007faabdfcefb6 in process_one_op () from /lib64/libganesha_nfsd.so.3.3
#16 0x00007faabdfd0188 in nfs4_Compound () from /lib64/libganesha_nfsd.so.3.3
#17 0x00007faabdf52826 in nfs_rpc_process_request () from /lib64/libganesha_nfsd.so.3.3
#18 0x00007faabdcf48df in svc_request () from /lib64/libntirpc.so.3.3
#19 0x00007faabdcf237a in svc_rqst_xprt_task_recv () from /lib64/libntirpc.so.3.3
#20 0x00007faabdcf2eae in svc_rqst_epoll_loop () from /lib64/libntirpc.so.3.3
#21 0x00007faabdcfd69c in work_pool_thread () from /lib64/libntirpc.so.3.3
#22 0x00007faabdeec432 in start_thread () from /lib64/libpthread.so.0
#23 0x00007faabde1a9d3 in clone () from /lib64/libc.so.6

That assertion corresponds to this:

  // touch item -- move to head of lru
  bool lru_touch(LRUObject *o) {
    if (!o->lru) {
      lru_insert_top(o);
    } else {
      ceph_assert(o->lru == this);  // <<< ASSERTION HERE
      auto list = o->lru_link.get_list();
      ceph_assert(list == &top || list == &bottom || list == &pintail);
      top.push_front(&o->lru_link);
      adjust();
    }
    return true;
  }
Actions

Also available in: Atom PDF