[Linux-cachefs] is there a way to set a minimum file size for fs-cache

Amit Kshirsagar amit.kshirsagar at yahoo.co.in
Tue Dec 14 08:11:52 UTC 2010


Hi,

We are hitting following issue on a fsc mounted nfs file system. 

$cat testfile.txt       <-- on client
cat: testfile.txt: No such file or directory

Then on nfs server testfile.txtx is created.

$cat testfile.txt       <-- on client (after 8 sec)

cat: testfile.txt: No such file or directory

$cat testfile.txt       <-- on client (after 15-20 sec)
This is line one
$


This clearly due to negative cookie. I enabled debugging and dmesg showed following:

[mount.] ==> __fscache_acquire_cookie({FSDEF.netfs},{NFS.server},ffff88031a7e6c00)
[mount.] <== __fscache_acquire_cookie() = ffff88031cd896a8
[mount.] ==> __fscache_acquire_cookie({NFS.server},{NFS.super},ffff88031cb1e400)
[mount.] <== __fscache_acquire_cookie() = ffff88031cd89660
[mount.] ==> __fscache_acquire_cookie({NFS.server},{NFS.super},ffff88030a4bdc00)
[mount.] <== __fscache_acquire_cookie() = ffff88031cd89ae0
[cat   ] ==> __fscache_acquire_cookie({NFS.super},{NFS.fh},ffff8801fe73a0c0)
[cat   ] ==> fscache_acquire_non_index_cookie()
[cat   ] ==> fscache_select_cache_for_object()
[cat   ] <== fscache_select_cache_for_object() = ffff88031ac47a00 [parent]
[cat   ] cache mycache
[cat   ] ==> fscache_alloc_object(ffff88031ac47a00,ffff88031cd89cd8{NFS.fh})
[cat   ] ALLOC OBJ12: NFS.fh {0}
[cat   ] ==> fscache_alloc_object(ffff88031ac47a00,ffff88031cd89fa8{NFS.super})
[cat   ] <== fscache_alloc_object() = 0 [found]
[cat   ] ==> fscache_attach_object({NFS.fh},{OBJ12})
[cat   ] <== fscache_attach_object() = 0
[cat   ] <== fscache_alloc_object() = 0
[cat   ] ==> fscache_enqueue_object({OBJ12})
[cat   ] <== fscache_acquire_non_index_cookie() = 0 [deferred]
[cat   ] <== __fscache_acquire_cookie() = ffff88031cd89cd8
[cat   ] ==> __fscache_read_or_alloc_pages(ffff88031cd89cd8,,1,,,)
[cat   ] ==> fscache_wait_for_deferred_lookup()
[kworke] ==> fscache_object_work_func({OBJ12})
[kworke] ==> fscache_object_state_machine({OBJ12,OBJECT_INIT,0})
[kworke] ==> fscache_initialise_object()
[kworke] parent OBJECT_ACTIVE
[kworke] go
[kworke] <== fscache_initialise_object()
[kworke] <== fscache_object_state_machine() [->OBJECT_LOOKING_UP]
[kworke] ==> fscache_enqueue_object({OBJ12})
[kworke] ==> fscache_object_work_func({OBJ12})
[kworke] ==> fscache_object_state_machine({OBJ12,OBJECT_LOOKING_UP,0})
[kworke] ==> fscache_lookup_object()
[kworke] LOOKUP "NFS.super/NFS.fh" in "mycache"
[kworke] ==> fscache_object_lookup_negative({OBJ12,OBJECT_LOOKING_UP})
[kworke] wake up lookup ffff88031cd89d18
[kworke] <== fscache_object_lookup_negative()
[kworke] ==> fscache_obtained_object({OBJ12,OBJECT_CREATING})
[kworke] <== fscache_obtained_object()
[kworke] <== fscache_lookup_object()
[kworke] <== fscache_object_state_machine() [->OBJECT_AVAILABLE]
[cat   ] <== fscache_wait_for_deferred_lookup() = 0 [dly]
[kworke] ==> fscache_enqueue_object({OBJ12})
[cat   ] ==> fscache_submit_op({OBJ12 OP23},{1})
[kworke] ==> fscache_object_work_func({OBJ12})
[cat   ] - mark ffffea0006e7f1c0{0}
[cat   ] ==> fscache_put_operation({OBJ12 OP23,1})
[cat   ] PUT OP
[cat   ] ==> fscache_release_retrieval_op({OP23})
[cat   ] <== fscache_release_retrieval_op()
[kworke] ==> fscache_object_state_machine({OBJ12,OBJECT_AVAILABLE,0})
[kworke] ==> fscache_object_available({OBJ12})
[kworke] ==> fscache_done_parent_op(OBJ12 {OBJ6,1})
[kworke] ==> fscache_enqueue_dependents({OBJ12})
[cat   ] woke 0 ops on OBJ12
[cat   ] <== fscache_put_operation() [done]
[cat   ] <== __fscache_read_or_alloc_pages() = -61
[kworke] <== fscache_object_available()
[kworke] <== fscache_object_state_machine() [->OBJECT_ACTIVE]
[kworke] ==> __fscache_write_page(ffff88031cd89cd8,1009,)
[kworke] store limit 1
[kworke] ==> fscache_submit_op({OBJ12 OP25},{1})
[kworke] ==> fscache_enqueue_operation({OBJ12 OP25,1})
[kworke] queue async
[kworke] ==> fscache_put_operation({OBJ12 OP25,2})
[kworke] <== __fscache_write_page() = 0
[kworke] ==> fscache_op_work_func({OBJ12 OP25,1})
[kworke] ==> fscache_write_op({OP25,1})
[kworke] gang 1 [0]
[kworke] ==> fscache_enqueue_operation({OBJ12 OP25,1})
[kworke] queue async
[kworke] <== fscache_write_op()
[kworke] ==> fscache_put_operation({OBJ12 OP25,2})
[kworke] <== fscache_op_work_func()
[kworke] ==> fscache_op_work_func({OBJ12 OP25,1})
[kworke] ==> fscache_write_op({OP25,1})
[kworke] cease
[kworke] <== fscache_write_op()
[kworke] ==> fscache_put_operation({OBJ12 OP25,1})
[kworke] PUT OP
[kworke] ==> fscache_release_write_op({OP25})
[kworke] woke 0 ops on OBJ12
[kworke] <== fscache_put_operation() [done]
[kworke] <== fscache_op_work_func()
[umount] ==> __fscache_relinquish_cookie(ffff88031cd89ae0{NFS.super,ffff88030a4bdc00},0)
[umount] ==> __fscache_cookie_put(ffff88031cd89ae0)
[umount] FREE COOKIE ffff88031cd89ae0
[umount] <== __fscache_cookie_put()
[umount] <== __fscache_relinquish_cookie()
[umount] ==> __fscache_relinquish_cookie(ffff88031cd89660{NFS.super,ffff88031cb1e400},0)
[umount] ==> __fscache_cookie_put(ffff88031cd89660)
[umount] FREE COOKIE ffff88031cd89660
[umount] <== __fscache_cookie_put()
[umount] <== __fscache_relinquish_cookie()
[umount] ==> __fscache_relinquish_cookie(ffff88031cd896a8{NFS.server,ffff88031a7e6c00},0)
[umount] ==> __fscache_cookie_put(ffff88031cd896a8)
[umount] FREE COOKIE ffff88031cd896a8
[umount] <== __fscache_cookie_put()
[umount] <== __fscache_relinquish_cookie()




My question is :

1.      Is there a way to set a minimum file size for fs-cache?

2.     Is there a way to change/tune negative cookie  refresh time?


Thanks in advance,
Amit 











More information about the Linux-cachefs mailing list