From: alebre <al...@us...> - 2010-04-08 22:22:23
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "kdfs". The branch, make_kdfs_compile has been updated via eeac43c259fa29f8f8595c6657e23c1fe3e291ea (commit) via 149616b9bad210b6fbbc37d44d9201ef01cd9fb7 (commit) from f2224460b8a9dc2773dab44caf9df1c1450b273e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit eeac43c259fa29f8f8595c6657e23c1fe3e291ea Author: ad <leb...@fr...> Date: Tue Apr 6 19:44:03 2010 +0000 [FIX] kdfs_get_distpage led to some crashes when the page was new and that no extent was assigned for this page diff --git a/fs/kdfs/address_space.c b/fs/kdfs/address_space.c index 996f92f..c98e8b2 100644 --- a/fs/kdfs/address_space.c +++ b/fs/kdfs/address_space.c @@ -316,6 +316,13 @@ struct kdfs_page *kdfs_get_distpage(struct kdfs_inode *k_inode, pgoff_t page_id objid_t objid ; masternode = kdfs_file_extent_get_page_owner(k_inode, page_id); + if(masternode == KDFS_NONE_NODEID) { + // The page is new. Since this is a read, we do not really have to assign the page + // to the current node id but we do :(TODO - fix the strange assignement and try to handle diskless approach case) + masternode = kerrighed_node_id ; + kdfs_file_extent_set_page_owner(k_inode, page_id, masternode); + } + objid = pageindex_to_contentobjid(masternode, page_id); DEBUG(DBG_INFO, "Get page %ld (masternode %d, objid %ld from set %ld)\n", page_id, masternode, objid, k_inode->content_setid); commit 149616b9bad210b6fbbc37d44d9201ef01cd9fb7 Author: ad <leb...@fr...> Date: Tue Apr 6 19:21:27 2010 +0000 [SANITY CHECKS] kdfs_distget_page can lead to some crashes, add bug_on at the first sight diff --git a/fs/kdfs/address_space.c b/fs/kdfs/address_space.c index 88c3a49..996f92f 100644 --- a/fs/kdfs/address_space.c +++ b/fs/kdfs/address_space.c @@ -312,11 +312,17 @@ struct address_space_operations kdfs_aops = { // I did that just to be faster, will improve that later if the code runs ;) struct kdfs_page *kdfs_get_distpage(struct kdfs_inode *k_inode, pgoff_t page_id){ struct kdfs_page *k_page; - DEBUG(DBG_INFO, "Get page %ld from set %ld\n", page_id, k_inode->content_setid); - k_page =kdfs_get_page(k_inode->content_setid, - pageindex_to_contentobjid( - kdfs_file_extent_get_page_owner(k_inode, page_id),page_id)); - return k_page; + kdfs_node_t masternode ; + objid_t objid ; + + masternode = kdfs_file_extent_get_page_owner(k_inode, page_id); + objid = pageindex_to_contentobjid(masternode, page_id); + + DEBUG(DBG_INFO, "Get page %ld (masternode %d, objid %ld from set %ld)\n", page_id, masternode, objid, k_inode->content_setid); + BUG_ON(objid == -1); + + k_page =kdfs_get_page(k_inode->content_setid,objid); + return k_page; } ----------------------------------------------------------------------- Summary of changes: fs/kdfs/address_space.c | 23 ++++++++++++++++++----- 1 files changed, 18 insertions(+), 5 deletions(-) hooks/post-receive -- kdfs |