[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [Linux-cachefs] Issues
- From: David Howells <dhowells redhat com>
- To: konetzed quixoticagony com, Linux filesystem caching discussion list <linux-cachefs redhat com>
- Cc:
- Subject: Re: [Linux-cachefs] Issues
- Date: Fri, 22 May 2009 12:22:50 +0100
"Edward \"Koko\" Konetzko" <konetzed quixoticagony com> 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;
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]