Re: Issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Edward \"Koko\" Konetzko" <konetzed@xxxxxxxxxxxxxxxxx> wrote:

> [kslowd] ==> cachefiles_attr_changed({OBJ208dd},[12222])

We started by adjusting the size of the storage object file to be what we
expected here.

> [cp    ] read back ffffe200003a4030{2,1}
> [cp    ] - present ffffe200006fa810
> [cp    ] - not ready ffffe200006fa810{100000000000801}
> [cp    ] - monitor add

Meanwhile, we got on with reading data from the backing file.  We found that
the third page was already in the pagecache, presumably from a previous
testrun (I assume you're not unmounting the partition holding /var/fscache/
between runs as it is your root partition).  We noted that it was locked (bit
0 is PG_locked), and set up to wait for it to be unlocked.

> [kslowd] ==> cachefiles_read_waiter({2},3,0,{ffffe200006fa810,0})
> [kslowd] --- monitor ffffe200006fa810 100000000000810 ---

The page then got unlocked, 

> Pid: 6131, comm: kslowd Not tainted 2.6.30-rc6 #1
> ...
> CacheFiles: I/O Error: Readpage failed on backing file 100000000000810
> FS-Cache: Cache cachefiles stopped due to I/O error

and we noted that PG_error and PG_uptodate weren't set, so we disabled the
cache.

Looking in the backtrace:

> [<ffffffffa027cc6e>] ? cachefiles_read_waiter+0xd9/0x147 [cachefiles]
> ...
> [<ffffffffa003a793>] ? ext3_truncate+0x4d7/0x8ed [ext3]
> ...
> [<ffffffffa003baa5>] ? ext3_setattr+0x17b/0x1e6 [ext3]
> [<ffffffff802bd8e9>] ? notify_change+0x186/0x2c9
> [<ffffffffa02789de>] ? cachefiles_attr_changed+0x133/0x1cd [cachefiles]

ext3_truncate() - called indirectly by cachefiles_attr_changed() - has decided
to eliminate one of the pages we were trying to read.

It looks like the NFS inode may have shrunk or maybe ext3 is trying to clear a
partial page spanning the EOF, and so ext3_truncate() is taking away a page
we're trying to read from.

Can you add the attached patch to get some more debugging info?

David
---
diff --git a/fs/cachefiles/interface.c b/fs/cachefiles/interface.c
index 1e96234..0a195e3 100644
--- a/fs/cachefiles/interface.c
+++ b/fs/cachefiles/interface.c
@@ -401,6 +401,8 @@ static int cachefiles_attr_changed(struct fscache_object *_object)
 	if (oi_size == ni_size)
 		return 0;
 
+	kdebug("- change i_size %llx -> %llx", oi_size, ni_size);
+
 	newattrs.ia_size = ni_size;
 	newattrs.ia_valid = ATTR_SIZE;
 

--
Linux-cachefs mailing list
Linux-cachefs@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/linux-cachefs

[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]
  Powered by Linux