[Linux-cachefs] PROBLEM: ASSERT(object->dentry) fails in cachefiles_delete_object()

Manuel Schölling manuel.schoelling at gmx.de
Fri Sep 19 12:27:53 UTC 2014


Hi David,

I'm afraid the patch didn't quite fix it:
I get a BUG() in cachefiles_mark_object_active():

      KERNEL: /usr/lib/debug/lib/modules/3.14.15/vmlinux
    DUMPFILE: /var/crash/201409181627/vmcore.201409181627
        CPUS: 24
        DATE: Thu Sep 18 16:26:01 2014
      UPTIME: 03:29:24
LOAD AVERAGE: 0.19, 0.12, 0.14
       TASKS: 458
    NODENAME: animate-x3
     RELEASE: 3.14.15
     VERSION: #1 SMP Thu Sep 18 10:27:48 CEST 2014
     MACHINE: x86_64  (3466 Mhz)
      MEMORY: 48 GB
       PANIC: "kernel BUG at fs/cachefiles/namei.c:200!"
         PID: 25889
     COMMAND: "kworker/u49:1"
        TASK: ffff880624e793f0  [THREAD_INFO: ffff88046cd52000]
         CPU: 2
       STATE: TASK_RUNNING (PANIC)

which is this line:

static int cachefiles_mark_object_active(struct cachefiles_cache *cache,
					 struct cachefiles_object *object)
{
	[...]
	
wait_for_old_object:
	if (fscache_object_is_live(&object->fscache)) {
		printk(KERN_ERR "\n");
		printk(KERN_ERR "CacheFiles: Error:"
		       " Unexpected object collision\n");
		cachefiles_printk_object(object, xobject);
		BUG(); // <===================------------ here
	}

	[...]
}

However, I made a mistake: I didn't compile the patched kernel with
debugging info. I rebuild the patched kernel now including the debugging
info, but the new info doesn't seem to fit the kdump data of the patched
kernel without debugging info. So I cannot give you detailed data about
the variables.

As soon as the kernel crashes again, I will send it to you.


Thank you very much for all your effortsa and have a nice weekend!

Manuel

On Do, 2014-09-18 at 11:20 +0100, David Howells wrote:
> Manuel Schölling <manuel.schoelling at gmx.de> wrote:
> 
> > [1. text/plain; object_fscache_cookie.txt]
> > ...
> >   flags = 23
> 
> That would be 0x17, or:
> 
> 	FSCACHE_COOKIE_LOOKING_UP
> 	FSCACHE_COOKIE_NO_DATA_YET
> 	FSCACHE_COOKIE_UNAVAILABLE
> 	FSCACHE_COOKIE_RELINQUISHED
> 
> so fscache_relinquish_cookie() was called and the cookie thinks it was still
> in the process of being looked up.
> 
> > [2. text/plain; object_fscache_parent_cookie.txt]   
> > ...
> >   flags = 32
> 
> That would be 0x20, or:
> 
> 	FSCACHE_COOKIE_ENABLED
> 
> so that appears to be live.
> 
> > [3. text/plain; object_fscache_parent.txt]
> > ...
> >   state = 0xffffffffa02b07c0 <fscache_osm_WAIT_FOR_CMD>,
> > ...
> >   lookup_jif = 4298902188, 
> >   oob_event_mask = 96, 
> >   event_mask = 109, 
> >   events = 16, 
> >   flags = 56, 
> 
> The flags are 0x38, or:
> 
> 	FSCACHE_OBJECT_IS_LIVE
> 	FSCACHE_OBJECT_IS_LOOKED_UP
> 	FSCACHE_OBJECT_IS_AVAILABLE
> 
> so the parent object looks okay.
> 
> So it does just look like I've failed to take account of the fact that I can
> get to the DROP_OBJECT state without actually looking up the object - and thus
> I might not see object->dentry having been set yet.
> 
> David






More information about the Linux-cachefs mailing list